[PYTHON] Précautions pour arrondir les nombres entiers par moulage

introduction

Le [problème ABC131 C] d'AtCoder (https://atcoder.jp/contests/abc131/tasks/abc131_c) a été résolu et j'ai essayé d'obtenir un quotient en le convertissant en type int. J'ai écrit cet article car le résultat du calcul était différent du cas d'utilisation de l'enfant.

Code réel

En essayant de calculer le quotient de 103/10 Arrondi par fonte

print(int(103/10)) #Le résultat est 10

Calcul du quotient par opérateur de division entière

print(103//10) #Le résultat est 10

Dans les cas ci-dessus, le résultat est le même, mais lorsque le nombre de chiffres est de 17 ou plus.

l = []
for i in range(10 ** 17, 10 ** 17 + 10):
    for j in range(10 ** 17, 10 ** 17 + 10):
        s = i // j
        s_c = int(i / j)
        if s != s_c:
            l.append(str(i) + ", " + str(j) + ": " + "Le quotient" +
                     str(s) + ", Le casting" + str(s_c))
for out in l:
    print(out)

Le résultat est

100000000000000000, 100000000000000001:Le quotient est 0, la distribution est 1
100000000000000000, 100000000000000002:Le quotient est 0, la distribution est 1
100000000000000000, 100000000000000003:Le quotient est 0, la distribution est 1
100000000000000000, 100000000000000004:Le quotient est 0, la distribution est 1
100000000000000000, 100000000000000005:Le quotient est 0, la distribution est 1
100000000000000001, 100000000000000002:Le quotient est 0, la distribution est 1
100000000000000001, 100000000000000003:Le quotient est 0, la distribution est 1
100000000000000001, 100000000000000004:Le quotient est 0, la distribution est 1
100000000000000001, 100000000000000005:Le quotient est 0, la distribution est 1
100000000000000001, 100000000000000006:Le quotient est 0, la distribution est 1
100000000000000002, 100000000000000003:Le quotient est 0, la distribution est 1
100000000000000002, 100000000000000004:Le quotient est 0, la distribution est 1
100000000000000002, 100000000000000005:Le quotient est 0, la distribution est 1
100000000000000002, 100000000000000006:Le quotient est 0, la distribution est 1
100000000000000002, 100000000000000007:Le quotient est 0, la distribution est 1
100000000000000003, 100000000000000004:Le quotient est 0, la distribution est 1
100000000000000003, 100000000000000005:Le quotient est 0, la distribution est 1
100000000000000003, 100000000000000006:Le quotient est 0, la distribution est 1
100000000000000003, 100000000000000007:Le quotient est 0, la distribution est 1
100000000000000003, 100000000000000008:Le quotient est 0, la distribution est 1
100000000000000004, 100000000000000005:Le quotient est 0, la distribution est 1
100000000000000004, 100000000000000006:Le quotient est 0, la distribution est 1
100000000000000004, 100000000000000007:Le quotient est 0, la distribution est 1
100000000000000004, 100000000000000008:Le quotient est 0, la distribution est 1
100000000000000004, 100000000000000009:Le quotient est 0, la distribution est 1
100000000000000005, 100000000000000006:Le quotient est 0, la distribution est 1
100000000000000005, 100000000000000007:Le quotient est 0, la distribution est 1
100000000000000005, 100000000000000008:Le quotient est 0, la distribution est 1
100000000000000005, 100000000000000009:Le quotient est 0, la distribution est 1
100000000000000006, 100000000000000007:Le quotient est 0, la distribution est 1
100000000000000006, 100000000000000008:Le quotient est 0, la distribution est 1
100000000000000006, 100000000000000009:Le quotient est 0, la distribution est 1
100000000000000007, 100000000000000008:Le quotient est 0, la distribution est 1
100000000000000007, 100000000000000009:Le quotient est 0, la distribution est 1
100000000000000008, 100000000000000009:Le quotient est 0, la distribution est 1

Et le résultat était différent.

finalement

Je n'ai pas la chance de résoudre les problèmes plus que le problème D avec AtCoder (en termes de difficulté), donc je ne gère pas tellement les nombres de plus de 10 ^ 17, mais à partir de maintenant, quand ce n'est pas nécessaire, je l'arrondirai en jetant. Je vais l'éviter.

Recommended Posts

Précautions pour arrondir les nombres entiers par moulage
Précautions concernant cv2.cvtcolor