2012-05-31 4 views
0

мне нужно вычесть два очень больших целых чисел наряду с модулем 1000000007Вычитание очень больших чисел с модулем

х и у представляют собой целые числа 1 < = х, у < = 1000

long long s[x+1]; 
long long c[x+1]; 

for(int i=1;i<=x;i++) 
    c[i] = power(y,i)%mod; 

s[1]=1; 
for(int i=2;i<=x;i++){ 
    sum=0; 
    for(int j=1;j<i;j++){ 
     sum = (sum + (s[j]*c[i-j]%mod))%mod; 
    } 
    s[i] = (c[i] - sum)%mod; // <----------- s[i] is -ve 
} 

Этот вопрос когда c[i]%mod составляет менее Sum%mod

Например: Когда c [i] больше суммы.
Но c[i]%mod меньше Sum%mod
437001927 - 952742480

+1

Помогите объяснить, что должен делать ваш код? Что такое 'x'? Что делает «calctotal»? Что такое '' '' '' '' '' '' '' '' '? И в чем вопрос? –

ответ

0

Вы можете просто добавить if заявление.

if(s[i]<0) 
    s[i] += mod 
+0

Спасибо, что решил – user1301541

0

Я хотел бы использовать

s[i] = (c[i] - sum + mod) % mod; 

в этом случае. sum вычисляется по модулю mod, поэтому он не может превышать mod.

Смежные вопросы