杭电OJ1005-斐波拉契相关Number Sequence
来源:互联网 发布:c语言输出完全数 编辑:程序博客网 时间:2024/05/21 09:17
英语是硬伤,继续google
问题描述
一个数字序列被定义如下:
F(1)= 1中,f(2)= 1,F(N)=(A * F(N - 1)+ B * F(N - 2))模7。
由于A,B,和n,你要计算F(n)的值。
输入
输入由多个测试用例。每个测试用例包含3个整数A,B和N在一行(1<= A,B<= 1000,1<= N <=100,000,000)个。三个零信号输入的端部和该测试的情况是不进行处理。
输出
对于每一个测试用例,打印F(N)在一行的值。
我的代码:
#include<stdio.h>main(){ int s[100]; int a,b,n,i; while(scanf("%d%d%d",&a,&b,&n)!=EOF&&(a||b||n)) { s[1]=1; s[2]=1; for(i=3;i<=49;i++) { s[i]=(a*s[i-1]+b*s[i-2])%7; } printf("%d\n",s[n%49]); } return 0;}
解题思路:
找规律是唯一的方法。
从题目中可以看出点关键:1<= N <=100,000,000
N的上限这么大,纯用斐波拉切求肯定是会越界的
打表好像也不是很方便,所以是循环
因为模总是在0~6之间,所以f(i-1)与f(i-2)也是如此,所以公式就有7X7=49种情况,49以后肯定是一个循环
前49项可以用斐波拉切
目前知道的找规律这类的题还有:1021、1061、1061、1097
0 0
- 杭电OJ1005-斐波拉契相关Number Sequence
- 杭电OJ1005题
- 杭电oj1005
- 杭电oj1005
- [杭电]Number Sequence
- 杭电acm1005 Number Sequence
- 杭电1005 Number Sequence
- 杭电1711 Number Sequence
- 杭电 1711 Number Sequence
- 杭电 1005 Number Sequence
- 杭电 1005 Number Sequence
- 杭电1005 Number Sequence
- 杭电1005Number Sequence
- 杭电1711Number Sequence
- 杭电1005-Number Sequence
- 杭电hdu1005 Number Sequence
- 【杭电oj1711】Number Sequence
- 【杭电1005】Number Sequence
- 使用foreach输出枚举内容
- php字符串比较函数
- Struts2工作原理
- jquery和prototype.js的区别
- float double 避开科学计数法表示的手段
- 杭电OJ1005-斐波拉契相关Number Sequence
- 论python的类型推导
- Android 三种动画详解
- Sublime快捷键
- 团体程序设计天梯赛 决赛 L3 是否完全二叉搜索树
- 推荐音乐
- Java千百问_01基本概念(004)_Java都能做些什么
- 将IP地址转化为数字的形式的好处
- Eclipse ADB报错:Adb connection Error远程主机强迫关闭了一个现有的连接