I got wa on problem 184, spoj.pl/problems/ATMS/
Please help me. Code attached.
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <stdlib.h>
#include <math.h>
#include <cstring>
#include <algorithm>
#include <list>
#include <string>
#include <cctype>
#include <sstream>
#define uint8_t byte
using namespace std;
typedef unsigned char *byte_pointer;
#define N 100
#define M 35
int b[M];
bool c[100];
int n;
void div2()
{
int m=0;
for (int i=n-1;i>=0;i--){
b[i]+=m*10;
m=b[i]%2;
b[i]/=2;
}
if(m==1)b[0]++;
}
void div1()
{
int m=0;
for (int i=n-1;i>=0;i--){
b[i]+=m*10;
m=b[i]%2;
b[i]/=2;
}
}
int main(int argc, char **argv)
{
int t;
scanf("%d\n",&t);
for (;t>0;t--){
char a[30];
scanf("%s",a);
n=strlen(a);
for (int i=0;i<n;i++)b[i]=(int)a[n-i-1]-(int)'0';
for (int i=0;i<N;i++){
if (b[0]%2==1){c[i]=1;}else{c[i]=0;}
if (i%2==0){div1();}else{div2();}
}
bool f=true;
for (int i=0;i<n;i++)if(b[i])f=false;
if(f){
bool first=0;
for (int i=N-1;i>=0;i--)if(c[i]){if(first==0){printf("%d",i);first=1;}else{printf(" %d",i);}}
printf("\n");
}else{printf("No\n");}
for (int i=0;i<n;i++)b[i]=(int)a[n-i-1]-(int)'0';
for(int i=0;i<N;i++){
if (b[0]%2==1){c[i]=1;}else{c[i]=0;}
if (i%2==1){div1();}else{div2();}
}
f=true;
for (int i=0;i<n;i++)if(b[i])f=false;
if(f){
bool first=0;
for (int i=N-1;i>=0;i--)if(c[i]){if(first==0){printf("%d",i);first=1;}else{printf(" %d",i);}}
printf("\n");
}else{printf("No\n");}
}
return 0;
}