#include <cstdio> #include <vector> using namespace std; void GenerateFib(unsigned long long int *fib, int size) { fib[0]=1; fib[1]=2; for(int i=2;i<size;++i) { fib[i]=fib[i-1]+fib[i-2]; } } void GenerateAllFib(vector<unsigned long long int> &all_fib, unsigned long long int *fib, int size) { all_fib.clear(); all_fib.push_back(0); all_fib.push_back(1); for(int j=0;j<size;++j) { for(int i=j;i<size;++i) { unsigned long long int ij=fib[i]*fib[j]; if(ij<=1000*1000*1000) { all_fib.push_back(ij); } } } } void checkFib(vector<unsigned long long int> all_fib, unsigned long long int a) { for(int i=0;i<all_fib.size();++i) { if(a==all_fib[i]) { printf("TAK\n"); return; } } printf("NIE\n"); } int main() { int fib_size=48; unsigned long long int *fib=new unsigned long long int[fib_size]; GenerateFib(fib,fib_size); /* for(int i=0;i<fib_size;++i) { #ifdef _MSC_VER printf("%d -> %I64d %lf\n",i,fib[i],fib[i]/1000000000.0); #else printf("%d -> %lld %lf\n",i,fib[i],fib[i]/1000000000.0); #endif } */ vector<unsigned long long int> all_fib; GenerateAllFib(all_fib,fib,fib_size); /*printf("all_fib.size=%d\n",all_fib.size()); for(int i=0;i<all_fib.size();++i) { #ifdef _MSC_VER printf("%d %I64d\n",i,all_fib[i]); #else printf("%d %lld\n",i,all_fib[i]); #endif }*/ int n; scanf("%d",&n); for(int i=0;i<n;++i) { unsigned long long int a; #ifdef _MSC_VER scanf("%I64d",&a); #else scanf("%lld",&a); #endif checkFib(all_fib,a); } delete[] fib; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | #include <cstdio> #include <vector> using namespace std; void GenerateFib(unsigned long long int *fib, int size) { fib[0]=1; fib[1]=2; for(int i=2;i<size;++i) { fib[i]=fib[i-1]+fib[i-2]; } } void GenerateAllFib(vector<unsigned long long int> &all_fib, unsigned long long int *fib, int size) { all_fib.clear(); all_fib.push_back(0); all_fib.push_back(1); for(int j=0;j<size;++j) { for(int i=j;i<size;++i) { unsigned long long int ij=fib[i]*fib[j]; if(ij<=1000*1000*1000) { all_fib.push_back(ij); } } } } void checkFib(vector<unsigned long long int> all_fib, unsigned long long int a) { for(int i=0;i<all_fib.size();++i) { if(a==all_fib[i]) { printf("TAK\n"); return; } } printf("NIE\n"); } int main() { int fib_size=48; unsigned long long int *fib=new unsigned long long int[fib_size]; GenerateFib(fib,fib_size); /* for(int i=0;i<fib_size;++i) { #ifdef _MSC_VER printf("%d -> %I64d %lf\n",i,fib[i],fib[i]/1000000000.0); #else printf("%d -> %lld %lf\n",i,fib[i],fib[i]/1000000000.0); #endif } */ vector<unsigned long long int> all_fib; GenerateAllFib(all_fib,fib,fib_size); /*printf("all_fib.size=%d\n",all_fib.size()); for(int i=0;i<all_fib.size();++i) { #ifdef _MSC_VER printf("%d %I64d\n",i,all_fib[i]); #else printf("%d %lld\n",i,all_fib[i]); #endif }*/ int n; scanf("%d",&n); for(int i=0;i<n;++i) { unsigned long long int a; #ifdef _MSC_VER scanf("%I64d",&a); #else scanf("%lld",&a); #endif checkFib(all_fib,a); } delete[] fib; } |