#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; } |
English