http://www.sdutacm.org/onlinejudge2/index.php/Home/Index/problemdetail/pid/3561.html
AC代码:
#include <stdio.h>
long long num[10000];
long long count[100];
int main (){
num[1]=1;
num[2]=2;
for (int i=3;i<=50;i++){
num[i]=num[i-1]+num[i-2];
}
int n;
scanf ("%d",&n);
while (n--){
long long T;
scanf("%lld",&T);
int k=0;
long long c=T;
for(int i=50;i>=0;i--){
if (num[i]<=T&&T){
count[k++]=num[i];
T=T-num[i];
}
}
if (!T){
printf ("%lld=",c);
for (int i=k-1;i>0;i--){
printf ("%lld+",count[i]);
}
printf ("%lld\n",count[0]);
}
else{
printf ("-1");
}
}
return 0;
}