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