我的算法計算下面給出的算術運算,爲它完美的小值,但對於大量的,如218194447它返回一個隨機值,我曾試圖用很長很長整型,雙,但沒有工作,因爲模函數我有使用只能用int型可以使用,任何人都可以解釋如何解決,或可提供可能是有用的一個環節模函數只適用於整數數據類型嗎?
#include<stdio.h>
#include<math.h>
int main()
{
long long i,j;
int t,n;
scanf("%d\n",&t);
while(t--)
{
scanf("%d",&n);
long long k;
i = (n*n);
k = (1000000007);
j = (i % k);
printf("%d\n",j);
}
return 0;
}
請縮進/格式化您的代碼,使其可讀。謝謝。 – 2014-09-01 19:12:19
可能重複: - http://stackoverflow.com/questions/2177781/how-to-calculate-modulus-of-large-numbers – 2014-09-01 19:13:34
無關:只是用'1000000007'似乎比重新計算'戰俘相當清晰的(10,9 )+ 7',我們只能希望一個合理智能的編譯器進行優化。 – WhozCraig 2014-09-01 19:19:59