acm小题之关于大整数对1000000007取模
#include <stdio.h>
#include <math.h>
int main ()
{int a,i=1,n,T;
scanf("%d",&T);
n=T;
int q[T+1];
while(T--)
{scanf("%d",&a);
q[i++]=(long)((1/sqrt(5))*((pow(((1+sqrt(5))/2),a+2)-pow(((1-sqrt(5))/2),a+2))-1))%1000000007;
}
for(i=1;i<=n;i++)
printf("%d\n",q[i]);}
运行结果:
此题我算出Sn了,可是在取模这里一直有问题。。。求解计算过程中怎么防止溢出
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
每做一次加法和乘法,就取一次模
用递推算,不要用通项公式。
感谢两位大神啦ლ(╹ε╹ლ) 算出来了
(a+b)%c==(a%c)+(b%c)
乘法同理
经评论指正应是:(a+b)%c==((a%c)+(b%c))%c