迭代
每个数对应前面的一个数
#include<stdio.h> #include<iostream> using namespace std; #define max 88 long long s[max], n,p; char *first="T.T^__^"; void Init() { s[0]=7; s[1]=10; int i; for(i=2; i <= max; i++) s[i]=s[i-1]+s[i-2]; } int getp() { int i=0; while(n>s[i]) i++; return i-1; } int main() { Init(); while(scanf("%lld",&n)!=EOF) { while(n>7) { p=getp(); n-=s[p]; } cout<<first[n-1]<<endl; } return 0; }