题意:判断一个数能不能由Fibonacci 数相乘得到解析:前45个数已经到达10亿,所以直接暴力#include <iostream> #include<stdio.h> using namespace std; int a[100]; bool dfs(long long s,int k) { if(s<7)return true; for(int i=k; i<46; i++) { if(s<a[i])break; if(s%a[i]==0) { if(dfs(s/a[i],i)) return true; } } return false; } int main() { a[0]=0; a[1]=1; for(int i=2; i<46; i++) { a[i]=a[i-1]+a[i-2]; } int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); if(n==0||dfs(n,3)) printf("Yes\n"); else printf("No\n"); } return 0; }