mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Create 3561_huayunhualuo.cpp
From http://blog.csdn.net/huayunhualuo/article/details/51622867
This commit is contained in:
parent
f0e9ba9388
commit
59760891fb
80
SDUTOJ/3561_huayunhualuo.cpp
Normal file
80
SDUTOJ/3561_huayunhualuo.cpp
Normal file
|
@ -0,0 +1,80 @@
|
|||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
typedef long long LL;
|
||||
|
||||
LL a[100];
|
||||
|
||||
LL b[40];
|
||||
|
||||
int ans;
|
||||
|
||||
void Init()
|
||||
{
|
||||
a[0] = 0;
|
||||
|
||||
a[1] = 1; a[2] = 2;
|
||||
|
||||
for(int i = 3;i<=47;i++)
|
||||
{
|
||||
a[i] = a[i-1]+a[i-2];
|
||||
}
|
||||
}
|
||||
|
||||
bool dfs(LL u,int st,int num)
|
||||
{
|
||||
if(u == 0)
|
||||
{
|
||||
ans = num;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if(st == 0) return false;
|
||||
|
||||
for(int i = st;i>=1;i--)
|
||||
{
|
||||
if(u >= a[i])
|
||||
{
|
||||
b[num] = a[i];
|
||||
|
||||
if(dfs(u-a[i],i-1,num+1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
Init();
|
||||
|
||||
int T;
|
||||
|
||||
LL n;
|
||||
|
||||
scanf("%d",&T);
|
||||
|
||||
while(T--)
|
||||
{
|
||||
scanf("%lld",&n);
|
||||
|
||||
if(dfs(n,47,0))
|
||||
{
|
||||
printf("%lld=",n);
|
||||
|
||||
for(int i = ans - 1;i >=0;i--)
|
||||
{
|
||||
if(i!=ans-1) printf("+");
|
||||
|
||||
printf("%lld",b[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
else printf("-1\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user