HDU 1005 Number Sequence

解题报告:

题目大意:

f[1]=f[2]=1;f[n]=(A*f[n-1]+B*f[n-2])%7

建议还没有做这道题的人就不要花时间了,这题纯属一道坑爹的题,测试数据很多问题,并且已经有大神证明过这道题在逻辑上就有错误,但是这里还是说一下解题思路。

这道题数据量较大,有如果把1到n都算出来的话显然会TLE,所以得避开这个,我们可以发现f[n]的结果会呈现一个周期,所以我们只要算出一个周期内的f[n]就可以了,至于周期

是多少这里就不说了。。。。

 1 #include<cstdio>
 2 int a[100005];
 3 int main() {
 4     int A,B,N;
 5     a[1]=a[2]=1;
 6     while(scanf("%d%d%d",&A,&B,&N)&&(A||B||N)) {
 7         for(int i=3;i<=48;++i)
 8         a[i]=(A*a[i-1]+B*a[i-2])%7;
 9         printf("%d\n",a[N%48]);
10     }
11     return 0;
12 }
View Code

 

转载于:https://www.cnblogs.com/xiaxiaosheng/archive/2013/05/16/3082531.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值