Hexadecimal's theorem
来源:互联网 发布:手机进货软件 编辑:程序博客网 时间:2024/04/29 21:48
Description
Recently, a chaotic virus Hexadecimal advanced a new theorem which will shake the Universe. She thinks that each Fibonacci number can be represented as sum of three not necessary different Fibonacci numbers.
Let's remember how Fibonacci numbers can be calculated. F0 = 0, F1 = 1, and all the next numbers are Fi = Fi - 2 + Fi - 1.
So, Fibonacci numbers make a sequence of numbers: 0, 1, 1, 2, 3, 5, 8, 13, ...
If you haven't run away from the PC in fear, you have to help the virus. Your task is to divide given Fibonacci number n by three not necessary different Fibonacci numbers or say that it is impossible.
Input
The input contains of a single integer n (0 ≤ n < 109) — the number that should be represented by the rules described above. It is guaranteed that n is a Fibonacci number.
Output
Output three required numbers: a, b and c. If there is no answer for the test you have to print "I'm too stupid to solve this problem" without the quotes.
If there are multiple answers, print any of them.
Sample Input
3
1 1 1
13
2 3 8
#include <iostream>#include <cstring>#include <cstdio>using namespace std;#define N 1000000000unsigned long long num[110000];int main(){ memset(num,0,sizeof(num)); unsigned long long n; int count; num[1]=num[2]=1; for(count=3;; count++) if(num[count]<N) num[count]=num[count-1]+num[count-2]; else break; while(scanf("%I64d",&n)!=EOF) { int last,first=0; last=count; while(last>first) { if(num[(first+last)/2]>n) last=(first+last)/2-1; else if(num[(first+last)/2]<n) first=(first+last)/2+1; else break; } first=(first+last)/2; if(num[first]==n) printf("0 0 %I64d\n",n); else { int flag=0,j; if(first>=4) j=first-4; else j=0; first+=4; for(; j<first; j++) if(flag) break; else for(int x=j; x<first; x++) if(flag) break; else for(int y=x; y<first; y++) if(num[j]+num[x]+num[y]==n) { printf("%I64u %I64u %I64u\n",num[j],num[x],num[y]); flag=1; break; } if(!flag) printf("I'm too stupid to solve this problem\n"); } } return 0;}
- <cf>Hexadecimal's theorem
- Hexadecimal's theorem
- A. Hexadecimal's theorem
- CodeForces 199A Hexadecimal's theorem
- C. Hexadecimal's Numbers
- cf9C. Hexadecimal's Numbers
- C. Hexadecimal's Numbers
- Hexadecimal's Numbers CodeForces
- Hexadecimal's Numbers 题解
- Richardson's Theorem
- Parseval's Theorem
- Brewer's CAP Theorem
- Danskin's theorem
- Brewer’s CAP Theorem
- Brewer’s CAP Theorem
- Brewer’s CAP Theorem
- Fermat’s Chirstmas Theorem
- Fermat’s Chirstmas Theorem
- EM算法原理
- Linux介绍
- 如何优化JavaScript脚本的性能
- CString 进行Format 转换结尾乱码问题
- android 系统的休眠与唤醒+linux 系统休眠
- Hexadecimal's theorem
- zoj 3633 Alice's present
- C语言错误信息解释:中文
- 来至microsoft构建WinRT开发人员的回答
- linux 配置vim
- Ubuntu中有关Ftp服务器到架设
- GIT esercitazione
- 天天记录 - Android ListView加载图片
- 柳暗花明又一村