2016-11-24 3 views
0

リストが数字の場合、kでmodを見つける方法は10進数で与えられます。単一リンクリストが与えられていれば、番号付きのmodを見つける方法

例: - 数 - 1234567

リスト数の表現:7-> 6-> 5-> 4-> 3-> 2-> 1

K = 7

ANS = 1234567%7 = 5

pythonとjavaでは、リストを数値BigInteger(java)に変換してmodをとっている可能性があります。しかし、私はBigIntegerを使わずにそれをやりたかったのです。

は私がリスト

total=0 
for digit in numberList: 
    total = (total * 10 + digit) % k 
return total 

を反復しながら、MODを計算しようとしている。しかし、これは仕事に行くのではありません。

答えて

0

各桁のi番目の桁に10^iを掛けた剰余を計算することができます。そして、これらすべての余りを合計し、合計の残りの部分を見つける:1234567%7については

int mul = 1; 
int remainder = 0; 
for (int digit : digitArray) 
{ 
    remainder += (digit * mul) % k; 
    mul *= 10; 
} 
remainder = remainder % k; 

を、このループは基本的に計算します。

(7 % 7 + 60 % 7 + 500 % 7 + 4000 % 7 + 30000 % 7 + 200000 % 7 + 1000000 % 7) % 7 = 
(0 + 4 + 3 + 3 + 5 + 3 + 1) % 7 = 19 % 7 = 5 
+1

OPは、Java 'int'をオーバーフローする数値を処理するために彼らのリストのコードを望んでいるようにあなたが'のmul =(MUL * 10)%を行う必要がありますので、それは、見えますkulは 'mul'を大きくしすぎないようにします。 –

0

あなたのコードは近いですが、逆にあなたの番号のリストを処理する必要があります。私は簡単なPython listで説明します。

num = 1234567 

# Construct numberList 
numberList = [] 
n = num 
while n: 
    n, d = divmod(n, 10) 
    numberList.append(d) 

k = 7 
print(num, numberList, num % k) 

# Find numberList mod k 
r = 0 
for d in reversed(numberList): 
    r = (10 * r + d) % k 

print(r) 

出力

1234567 [7, 6, 5, 4, 3, 2, 1] 5 
5 
関連する問題