#include <iostream> int readLine(){ int lineL, bit, fib=1, num=0; std::cin>>lineL; for(int t= 0; t<lineL; t++){ std::cin>>bit; if(bit == 0){ fib+=fib; } else{ fib+=fib; num+=fib; } } return num; } int* readInTab(){ int lenght; std::cin>>lenght; int* tab = new int[lenght]; for(int t= 0; t<lenght; t++){ std::cin>>tab[t]; } return tab; } int* resize(int* rtab, int end){ int* tab = new int[end]; delete rtab; return tab; } int* multiply(int* tab, int times){ std::cout<<"-----------\n"; int i=0, end = times; bool move = false, next = false; std::cout<<"-----------\n"; int* rtab = new int[end]; std::cout<<"-----------\n"; for(int t = 0; t<times; t++){ std::cout<<"-------^^^^-\n"; do{ std::cout<<"-----------\n"; if(&rtab[t+i] == nullptr){ end++; rtab = resize(rtab,end); } if(move == false){ if(tab[t]+rtab[t]==2){ move = true; i++; } else{ rtab[t]=1; } } if(move == true){ if(tab[t]+rtab[t]<=1){ rtab[t+i]=0; i++; }else { rtab[t+i]=1; next = true; } } }while(next!=true); i=0; } end++; resize(rtab,end); rtab[end]=9; return rtab; } void loop() { int num = readLine(); std::cout<<num; int* tab = readInTab(); int* rtab = multiply(tab,num); for(int t; rtab[t] != 9; t++) { std::cout<<rtab[t]; } delete tab; delete rtab; } int main(){ int rep; std::cin>> rep; for(int t=0; t<rep;t++){ loop(); } 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 | #include <iostream> int readLine(){ int lineL, bit, fib=1, num=0; std::cin>>lineL; for(int t= 0; t<lineL; t++){ std::cin>>bit; if(bit == 0){ fib+=fib; } else{ fib+=fib; num+=fib; } } return num; } int* readInTab(){ int lenght; std::cin>>lenght; int* tab = new int[lenght]; for(int t= 0; t<lenght; t++){ std::cin>>tab[t]; } return tab; } int* resize(int* rtab, int end){ int* tab = new int[end]; delete rtab; return tab; } int* multiply(int* tab, int times){ std::cout<<"-----------\n"; int i=0, end = times; bool move = false, next = false; std::cout<<"-----------\n"; int* rtab = new int[end]; std::cout<<"-----------\n"; for(int t = 0; t<times; t++){ std::cout<<"-------^^^^-\n"; do{ std::cout<<"-----------\n"; if(&rtab[t+i] == nullptr){ end++; rtab = resize(rtab,end); } if(move == false){ if(tab[t]+rtab[t]==2){ move = true; i++; } else{ rtab[t]=1; } } if(move == true){ if(tab[t]+rtab[t]<=1){ rtab[t+i]=0; i++; }else { rtab[t+i]=1; next = true; } } }while(next!=true); i=0; } end++; resize(rtab,end); rtab[end]=9; return rtab; } void loop() { int num = readLine(); std::cout<<num; int* tab = readInTab(); int* rtab = multiply(tab,num); for(int t; rtab[t] != 9; t++) { std::cout<<rtab[t]; } delete tab; delete rtab; } int main(){ int rep; std::cin>> rep; for(int t=0; t<rep;t++){ loop(); } return 0; } |