题目链接https://www.nowcoder.com/acm/contest/91/F
思路:打表找规律。可以发现n其实是斐波拉契数列构成的
官方题解是数位dp和找规律
AC代码
1 #include<iostream>
2 #include<bits/stdc++.h>
3 #define ll long long
4 using namespace std;
5 ll a[100];
6 ll ans;
7 int main(){
8 a[0]=1;
9 a[1]=2;
10 for(int i=2;i<64;i++){
11 a[i]=a[i-1]+a[i-2];
12 }
13 ll T;
14 cin>>T;
15 while(T--){
16 ll n;
17 cin>>n;
18 ans=0;
19 while(n>0){
20 for(int i=0;i<63;i++){
21 if(n>=a[i]&&n<a[i+1]){
22 ll t=1;
23 ans+=(t<<i);
24 n=n-a[i];
25 }
26 }
27 }
28 cout<<ans<<endl;
29 }
30 return 0;
31 }