标签:
You live in the universe X where all the最少分解成几个斐波数,最后每一维相乘即为结果。
#include<stdio.h> #include<string.h> int fb[60]; int main(){ int t,ok,n,cas=1; int a[20]; fb[1]=1; fb[2]=2; for(int i=3;i<55;i++) fb[i]=fb[i-1]+fb[i-2]; scanf("%d",&t); while(t--){ int cnt=0; long long sum=1;//结果不用long long 会错 scanf("%d",&n); for(int i=0;i<n;++i) scanf("%d",&a[i]); for(int i=0;i<n;++i){ cnt=ok=0; int k; for(int j=1;j<55;j++){ if(a[i]==fb[j]){ ok=2; break; } if(a[i]<fb[j]){ ok=1; k=j; break; } } if(ok==1){ int x=a[i]; while(x){ while(fb[k]>x) k--; x-=fb[k]; cnt++; } } if(ok!=2)//ok==2时证明这条边是斐波数 sum*=cnt;//注意是相乘,, } printf("Case %d: %lld\n",cas++,sum); } return 0; }
标签:
原文地址:http://blog.csdn.net/ling_du/article/details/47811453