P5993 [PA2014]Iloczyn
FOI题题都是原题。
分析
[FOI2022]T1,建议红。
斐波那契数列,又称黄金分割数列。该数列具有神奇的特性:数列中每一数字都是其前面两个数字之和。前一数字与后一数字之比趋近于固定常数 。由此可以推算出:当 时,。
因此我们只要预处理到 就可以了,然后再用两层循环枚举判断即可。
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
long long read(){
long long x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
void write(long long x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
const int N=50;
ll t,n,f[N];
int main(){
cin>>t;
f[0]=0;
f[1]=1;
for(int i=2;i<=45;i++)
f[i]=f[i-1]+f[i-2];
while(t--){
cin>>n;
bool flag=0;
for(int i=0;i<=45;i++){
for(int j=i;j<=45;j++){
if(n==f[i]*f[j]){
flag=1;
break;
}
}
if(flag)
break;
}
if(flag)
cout<<"TAK"<<endl;
else
cout<<"NIE"<<endl;
}
return 0;
}
本文作者:luckydrawbox
本文链接:https://www.cnblogs.com/luckydrawbox/p/18526544
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步