#include <iostream> void funkcja(long long x){ if(x<3) if(x==0){ std::cout<<' '<<'0'<<' '<<'0'; return; } else if(x==1){ std::cout<<' '<<'1'<<' '<<'0'; return; } else{ std::cout<<' '<<'0'<<' '<<'1'; return; } int a_1=1, a=2, b=2, b_1=1; for(int i=0;;i++){ if(a>x/2){ if(a+a_1==x){ for(int j=0;j<i+2;j++){ std::cout<<' '<<'0'; } std::cout<<' '<<'1'; break; } funkcja(x-a); for(int j=0;j<i;j++){ if(b>x-a) std::cout<<' '<<'0'; b+=b_1; b_1=b-b_1; } std::cout<<' '<<'1'; break; } a+=a_1; a_1=a-a_1; } } int main() { short t; std::cin>>t; int n; long long a, a_1; int cyfra; long long x[t], y[t]; for(short li=0;li<t;li++) { std::cin>>n; a_1=1; a=1; x[li]=0; y[li]=0; for(int i=1;i<=2&&i<=n;i++){ std::cin>>cyfra; if(cyfra==1) x[li]+=a; a+=a_1; a_1=a-a_1; } for(int i=3;i<=n;i++){ std::cin>>cyfra; if(cyfra==1) x[li]+=a; a+=a_1; a_1=a-a_1; } std::cin>>n; a_1=1; a=1; for(int i=1;i<=2&&i<=n;i++){ std::cin>>cyfra; if(cyfra==1) y[li]+=a; a+=a_1; a_1=a-a_1; } for(int i=3;i<=n;i++){ std::cin>>cyfra; if(cyfra==1) y[li]+=a; a+=a_1; a_1=a-a_1; } x[li]*=y[li]; } for(short li=0;li<t;li++) { if(x[li]<3) if(x[li]==0){ std::cout<<'1'<<' '<<'0'; } else if(x[li]==1){ std::cout<<'1'<<' '<<'1'; } else{ std::cout<<'2'<<' '<<'0'<<' '<<'1'; } else{ int b=2, b_1=1; a=2; a_1=1; for(int i=0;;i++){ if(a>x[li]/2){ if(a+a_1==x[li]){ std::cout<<i+3; for(int j=0;j<i+2;j++){ std::cout<<' '<<'0'; } std::cout<<' '<<'1'; break; } std::cout<<i+2; funkcja(x[li]-a); for(int j=0;j<i;j++){ if(b>x[li]-a) std::cout<<' '<<'0'; b+=b_1; b_1=b-b_1; } std::cout<<' '<<'1'; break; } a+=a_1; a_1=a-a_1; } } std::cout<<std::endl; } return 0; }
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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | #include <iostream> void funkcja(long long x){ if(x<3) if(x==0){ std::cout<<' '<<'0'<<' '<<'0'; return; } else if(x==1){ std::cout<<' '<<'1'<<' '<<'0'; return; } else{ std::cout<<' '<<'0'<<' '<<'1'; return; } int a_1=1, a=2, b=2, b_1=1; for(int i=0;;i++){ if(a>x/2){ if(a+a_1==x){ for(int j=0;j<i+2;j++){ std::cout<<' '<<'0'; } std::cout<<' '<<'1'; break; } funkcja(x-a); for(int j=0;j<i;j++){ if(b>x-a) std::cout<<' '<<'0'; b+=b_1; b_1=b-b_1; } std::cout<<' '<<'1'; break; } a+=a_1; a_1=a-a_1; } } int main() { short t; std::cin>>t; int n; long long a, a_1; int cyfra; long long x[t], y[t]; for(short li=0;li<t;li++) { std::cin>>n; a_1=1; a=1; x[li]=0; y[li]=0; for(int i=1;i<=2&&i<=n;i++){ std::cin>>cyfra; if(cyfra==1) x[li]+=a; a+=a_1; a_1=a-a_1; } for(int i=3;i<=n;i++){ std::cin>>cyfra; if(cyfra==1) x[li]+=a; a+=a_1; a_1=a-a_1; } std::cin>>n; a_1=1; a=1; for(int i=1;i<=2&&i<=n;i++){ std::cin>>cyfra; if(cyfra==1) y[li]+=a; a+=a_1; a_1=a-a_1; } for(int i=3;i<=n;i++){ std::cin>>cyfra; if(cyfra==1) y[li]+=a; a+=a_1; a_1=a-a_1; } x[li]*=y[li]; } for(short li=0;li<t;li++) { if(x[li]<3) if(x[li]==0){ std::cout<<'1'<<' '<<'0'; } else if(x[li]==1){ std::cout<<'1'<<' '<<'1'; } else{ std::cout<<'2'<<' '<<'0'<<' '<<'1'; } else{ int b=2, b_1=1; a=2; a_1=1; for(int i=0;;i++){ if(a>x[li]/2){ if(a+a_1==x[li]){ std::cout<<i+3; for(int j=0;j<i+2;j++){ std::cout<<' '<<'0'; } std::cout<<' '<<'1'; break; } std::cout<<i+2; funkcja(x[li]-a); for(int j=0;j<i;j++){ if(b>x[li]-a) std::cout<<' '<<'0'; b+=b_1; b_1=b-b_1; } std::cout<<' '<<'1'; break; } a+=a_1; a_1=a-a_1; } } std::cout<<std::endl; } return 0; } |