acm小题之关于大整数对1000000007取模

发布于 2022-09-02 10:59:37 字数 603 浏览 12 评论 0

题图

#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

情归归情 2022-09-09 10:59:37

每做一次加法和乘法,就取一次模

温暖的光 2022-09-09 10:59:37

用递推算,不要用通项公式。

m = 1000000007
S(n)=(F(1)+F(2)+...+F(n)) % m
    =(F(1)%m + F(2)%m + ... + F(n)%m) % m

F(n) = F(n-2) + F(n-1)
F(n)%m = (F(n-2) + F(n-1)) % m
       = (F(n-2)%m + F(n-1)%m) % m
落在眉间の轻吻 2022-09-09 10:59:37

感谢两位大神啦ლ(╹ε╹ლ) 算出来了图片描述

只涨不跌 2022-09-09 10:59:37

(a+b)%c==(a%c)+(b%c)
乘法同理

经评论指正应是:(a+b)%c==((a%c)+(b%c))%c

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文