Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- int ans2[37]={0},ans1,min2;
- char in1[100]={'\0'},in2[100]={'\0'};
- void swap()
- {
- char in3[100];
- int i,n;
- strcpy(in3,in1);
- n=strlen(in3);
- for(i=0;i<strlen(in3);i++)
- {
- in1[i]=in3[n-i-1];
- }
- strcpy(in3,in2);
- n=strlen(in3);
- for(i=0;i<strlen(in3);i++)
- {
- in2[i]=in3[n-i-1];
- }
- }
- void sans2(int min)
- {
- min2=min;
- int i,j,n;
- for(i=min;i<=36;i++)
- {
- for(j=0;j<strlen(in2);j++)
- {
- if(in2[j]>='A')
- {
- n=(in2[j]-'A')+10;
- ans2[i]+=n*pow(i,j);
- }
- else
- {
- n=(in2[j]-'0');
- ans2[i]+=n*pow(i,j);
- }
- }
- }
- }
- int sans1(int min)
- {
- int i,j,n;
- for(i=min;i<=36;i++)
- {
- ans1=0;
- for(j=0;j<strlen(in1);j++)
- {
- if(in1[j]>='A')
- {
- n=(in1[j]-'A')+10;
- ans1+=n*pow(i,j);
- }
- else
- {
- n=(in1[j]-'0');
- ans1+=n*pow(i,j);
- }
- }
- for(j=min2;j<=36;j++)
- {
- if(ans1==ans2[j])
- {
- swap();
- printf("%s (base %d) = %s (base %d)\n",in1,i,in2,j);
- return 0;
- }
- }
- }
- swap();
- printf("%s is not equal to %s in any base 2..36\n",in1,in2);
- return 0;
- }
- int main()
- {
- int i,j;
- int max;
- while(1)
- {
- scanf("%s %s",in1,in2);
- swap();
- max=-1;
- for(i=0;i<strlen(in2);i++)
- {
- if(in2[i]<='9')
- {
- if(in2[i]-'0'>max) max=in2[i]-'0';
- }
- if(in2[i]>='A')
- {
- if((in2[i]-'A')+10>max) max=(in2[i]-'A')+10;
- }
- }
- sans2(max+1);
- max=-1;
- for(i=0;i<strlen(in1);i++)
- {
- if(in1[i]<='9')
- {
- if(in1[i]-'0'>max) max=in1[i]-'0';
- }
- if(in1[i]>='A')
- {
- if((in1[i]-'A')+10>max) max=(in1[i]-'A')+10;
- }
- }
- sans1(max+1);
- for(i=0;i<=36;i++) ans2[i]=0;
- memset(in1,'\0',strlen(in1));
- memset(in2,'\0',strlen(in2));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement