HDOJ1005 Number Sequence
2014-02-16 12:14
381 查看
原题链接
最多49一循环,关键是找到循环起点和循环次数,循环起点不一定为f[1],所以要把数组适当开大点。
之前一直把循环起点当成1了。所以老是WA。%>_<%
附ac代码:
#include <stdio.h>
int f[100];
int main(){
int a, b, n, i, j, cir;
while(scanf("%d%d%d", &a, &b, &n), a || b || n){
f[1] = f[2] = 1; cir = 0;
for(i = 3; i != 100; ++i){
f[i] = (a * f[i - 1] + b * f[i - 2]) % 7;
for(j = 2; j != i; ++j)
if(f[j - 1] == f[i - 1] && f[j] == f[i]){
cir = i - j;
break;
}
if(cir) break;
}
printf("%d\n", f[(n - j) % cir + j]);
}
return 0;
}
最多49一循环,关键是找到循环起点和循环次数,循环起点不一定为f[1],所以要把数组适当开大点。
之前一直把循环起点当成1了。所以老是WA。%>_<%
附ac代码:
#include <stdio.h>
int f[100];
int main(){
int a, b, n, i, j, cir;
while(scanf("%d%d%d", &a, &b, &n), a || b || n){
f[1] = f[2] = 1; cir = 0;
for(i = 3; i != 100; ++i){
f[i] = (a * f[i - 1] + b * f[i - 2]) % 7;
for(j = 2; j != i; ++j)
if(f[j - 1] == f[i - 1] && f[j] == f[i]){
cir = i - j;
break;
}
if(cir) break;
}
printf("%d\n", f[(n - j) % cir + j]);
}
return 0;
}
相关文章推荐
- 递归及递推问题系列之 Number Sequence hdoj 1005
- hdoj1005_number sequence
- 【HDOJ 1005】 Number Sequence (裸矩阵快速幂)
- HDOJ - 1005 - Number Sequence(规律,数学、非常规)
- HDOJ丶 1005(Number Sequence)
- 渣渣ACM日记——1005-Number Sequence(HDOJ)
- HDOJ 1005 Number Sequence
- HDOJ1005 Number Sequence
- hdoj1005_Number Sequence
- hdoj 1005 Number Sequence
- ACM--DP--HDOJ 1005--Number Sequence
- HDOJ 1005 Number Sequence
- [HDOJ1005]Number Sequence
- HDOJ 1005 Number Sequence(规律)
- hdoj-【1005 Number Sequence】
- hdoj 1005 Number Sequence
- HDOJ 1005-Number Sequence【规律】
- HDOJ 1005 Number Sequence
- HDOJ1005 Number Sequence(数论水题)
- 【hdoj1005】Number Sequence