[NOIP模拟][数学]Fibonacci
2017-10-23 16:53
295 查看
题目描述:
豆豆最近迷上了 Fibonacci 数,然后他开始研究 Fibonacci 数的乘积。现在他想问你某个数能不能分解成两个 Fibonacci 数的乘积?
Fibonacci 数的定义:F0=0,F1=1,Fk=Fk−1+Fk−2 。
输入格式:
第一行一个整数 T 代表提问次数。
接下来 T 行,每行一个数字 A 表示豆豆询问你的数。
输出格式:
对于每次提问,如果这个数可以被分解成两个 Fibonacci 数的成绩输出“Yes”,否则输出“No”。
样例输入:
5
5
4
12
11
10
样例输出:
Yes
Yes
No
No
Yes
数据范围:
对于 50% 的数据:A≤50;
对于 100% 的数据:T≤100;0≤A≤109 。
题目分析:
初看这道题觉得乘积应该没有什么规律啊。然后忽然想起斐波那契的增长很快的然后写代码算了一下,发现第45项就大于109。于是就是一道简单题:预处理出斐波那契数列,可以先n2预处理出109内所有乘积的结果,然后O(1)回答。当然也可以每次询问再n2枚举,看是否符合,反正n(=45)那么小。
附代码:
豆豆最近迷上了 Fibonacci 数,然后他开始研究 Fibonacci 数的乘积。现在他想问你某个数能不能分解成两个 Fibonacci 数的乘积?
Fibonacci 数的定义:F0=0,F1=1,Fk=Fk−1+Fk−2 。
输入格式:
第一行一个整数 T 代表提问次数。
接下来 T 行,每行一个数字 A 表示豆豆询问你的数。
输出格式:
对于每次提问,如果这个数可以被分解成两个 Fibonacci 数的成绩输出“Yes”,否则输出“No”。
样例输入:
5
5
4
12
11
10
样例输出:
Yes
Yes
No
No
Yes
数据范围:
对于 50% 的数据:A≤50;
对于 100% 的数据:T≤100;0≤A≤109 。
题目分析:
初看这道题觉得乘积应该没有什么规律啊。然后忽然想起斐波那契的增长很快的然后写代码算了一下,发现第45项就大于109。于是就是一道简单题:预处理出斐波那契数列,可以先n2预处理出109内所有乘积的结果,然后O(1)回答。当然也可以每次询问再n2枚举,看是否符合,反正n(=45)那么小。
附代码:
#include<iostream> #include<cstring> #include<string> #include<cstdlib> #include<cstdio> #include<ctime> #include<cmath> #include<cctype> #include<iomanip> #include<algorithm> using namespace std; int num,a,t; long long f[100]; bool check; int readint() { char ch;int i=0,f=1; for(ch=getchar();(ch<'0'||ch>'9')&&ch!='-';ch=getchar()); if(ch=='-') {ch=getchar();f=-1;} for(;ch>='0'&&ch<='9';ch=getchar()) i=(i<<3)+(i<<1)+ch-'0'; return i*f; } int main() { freopen("fib.in","r",stdin); freopen("fib.out","w",stdout); f[1]=1;f[2]=1; for(int i=3;i<=45;i++) f[i]=f[i-1]+f[i-2]; t=readint(); while(t--) { check=false; a=readint(); if(a==0) {printf("Yes\n");continue;} for(int i=1 a286 ;i<=45;i++) { for(int j=i;j<=45;j++) { if(f[i]*f[j]==a) { check=true; break; } if(f[i]*f[j]>a) break; } if(check==true) break; } if(check==true) printf("Yes\n"); else printf("No\n"); } return 0; }
相关文章推荐
- [NOIP模拟][数学推理]Math
- [NOIP2005][CODEVS1106]篝火晚会(模拟+数学相关)
- 【2014.8.17NOIP普及组模拟】【高精度乘法】公牛数学(bullmath.pas/c/cpp) //2018.2.2
- NOIP模拟 杆子的排列【加强版】【组合数学】【斯特林数】
- jzoj 【2014.8.17NOIP普及组模拟】公牛数学
- [NOIP2017模拟]Fibonacci
- NOIP模拟(20171024)T3 数学
- 【NOIP模拟考一】组合数学 day1 third 子集
- 【2014.8.17NOIP普及组模拟】公牛数学
- JZOJ5384. 【NOIP2017提高A组模拟9.23】四维世界 组合数学
- 【NOIP2011模拟9.17】旅行
- 2558. 【NOIP2011模拟9.9】过河问题 (StandardIO)
- [JZOJ 3794]. 【NOIP2014模拟8.20】高级打字机
- 高中OJ 3793. 【NOIP2014模拟8.20】数字对
- 【备战NOIP2012图论专项模拟试题】位图
- NOIP 2017 提高组 时间复杂度___模拟
- JZOJ.4709【NOIP2016提高A组模拟8.17】Matrix
- [NOIP2017模拟]art2
- NOIP提高模拟 Binary
- 【JZOJ4710】【NOIP2016提高A组模拟8.17】Value