码迷,mamicode.com
首页 > 其他好文 > 详细

【bzoj2796】 [Poi2012]Fibonacci Representation

时间:2017-05-20 10:12:18      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:return   represent   log   type   bsp   its   name   read   har   

给出一个数字,用FIB数列各项加加减减来得到。

问最少要多少个(可以重复使用)

大概试了一下,fibonacci数列的增长是很快的,大概到了90+项就超过了题目范围……

所以每次找一个最近的fibonacci数试一下就好,实测跑得飞快。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 ll f[100],n,m;
 5 inline ll read(){
 6     ll f=1,x=0;char ch;
 7     do{ch=getchar();if(ch==-)f=-1;}while(ch<0||ch>9);
 8     do{x=x*10+ch-0;ch=getchar();}while(ch>=0&&ch<=9);
 9     return f*x;
10 }
11 int work(ll x){
12     if(!x)return x;int i;
13     for(i=1;f[i]<x;i++);
14     return work(min(f[i]-x,x-f[i-1]))+1;
15 }
16 int main(){
17     f[0]=1;f[1]=1;
18     for(int i=2;i<=91;i++)f[i]=f[i-1]+f[i-2];
19     int T=read();
20     while(T--){
21         n=read();
22         printf("%d\n",work(n));
23     }
24     return 0;
25 }

 

【bzoj2796】 [Poi2012]Fibonacci Representation

标签:return   represent   log   type   bsp   its   name   read   har   

原文地址:http://www.cnblogs.com/zcysky/p/6881338.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!