博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
新的斐波那契数列
阅读量:5950 次
发布时间:2019-06-19

本文共 1031 字,大约阅读时间需要 3 分钟。

转载请标明出处: 

Problem1: 

题目描写叙述: 

定义一个新的斐波那契数列:

 F(0)=7。 

F(1)=11; 

F(n)=F(n-1)+F(n-2);(n>=2) 

输入: 

输入有多组;首先输入一个N(N<=100)。代表要输入的測试用例的个数;接下来输入N个数字ni(ni<=100),数字间用空格隔开。

输出: 

求F(n)是否能被3整除,若能整除输出‘yes’,否则输出‘no’。

 

例子输入:

 3 0 1 2 

例子输出:

no 

no

yes

提示:不能用递归,否则超时!

在计算时。我们不是必需算出递推的真正值,后面会越来越大,可能Int 都存不下了!

题目仅仅要求算是否是3的倍数。也就是说。无论值多大。最后都仅仅是 3n+0,3n+1,3n+2 这三种情况,我们仅仅需对3取余就可以。

/* * 描写叙述: 新的斐波那契数列 * 作者: 张亚超  * 博客: 牟尼的专栏 http://blog.csdn.net/u012027907 * 日期: 2014/8/24 */#include
#define N 105int F[N]; // 记录递推数对3取余的余数int I[N]; // 记录输入的n个值bool mark[N]; //标记相应数是否是3的余数int main(){ F[0] = 7; F[1] = 11; for(int i = 0; i < N; i++) //标记初始化为false mark[i] = false; for(i = 2; i < N; i++){ //计算递推数对3取余的余数 F[i] = F[i-1] + F[i-2]; if(F[i] % 3 == 0) //若为3的倍数,标记 mark[i] = true; F[i] %= 3; //重要一步。简化运算,仅仅存对3的余数 } int n; while(scanf("%d",&n) != EOF){ for(int i = 0; i < n; i++){ //输入 scanf("%d",&I[i]); } for( i = 0; i < n; i++){ //输出 if(mark[I[i]]) printf("yes\n"); else printf("no\n"); } } return 0;}
转载请标明出处: 

你可能感兴趣的文章
Windows 64 位 mysql 5.7以上版本包解压安装
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>
TClientDataSet[14]: 测试 FindFirst、FindNext、FindLast、FindPrior、Found
查看>>
CentOS 6.3中配置bond多网卡负载均衡
查看>>
clamav 完整查杀 linux 病毒实战
查看>>
EIGRP的Metric计算以及负载均衡
查看>>
org-capture 配置
查看>>
linux下lvs搭建负载均衡集群
查看>>
JMS 实例讲解
查看>>
求教:如何成为一个优秀的项目经理人
查看>>
shell 脚本--备份、还原mysql数据库
查看>>
JS脚本静态变量调用方法
查看>>
linux中cacti和nagios整合
查看>>
Parallels Desktop12推出 新增Parallels Toolbox
查看>>
正则表达式验证身份证格式是否正确
查看>>
xml格式文件解析
查看>>
ios百度地图-路径规划
查看>>
Python高效编程技巧
查看>>
配置Eclipse使用maven构建项目默认JDK为1.8
查看>>
jsp内置对象以及jsp动作
查看>>