fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define FR0(i,N) for(i=0;i<(N);i++)
  4. #define FR1(i,N) for(i=1;i<=(N);i++)
  5. #define FRN(i,k,N) for(i=k;i<(N);i++)
  6. #define pf printf
  7. #define db double
  8. #define max3(a,b,c) max(max(a,b),c)
  9. #define min3(a,b,c) min(min(a,b),c)
  10. #define sci(n) scanf("%d",&n)
  11. #define scl(n) scanf("%lld",&n)
  12. #define scf(n) scanf("%f",&n)
  13. #define scd(n) scanf("%lf",&n)
  14. #define scs(s) scanf("%s",&s)
  15. #define scll(n) scanf("%%I64d",&n)
  16. #define PI acos(-1.0)
  17. #define LL long long
  18. #define MX 1000005
  19. #define MOD 1000000007
  20. typedef long long int ll;
  21. typedef unsigned long long int ull;
  22. bool status[1100002];
  23. int main()
  24. {
  25. int from,to;
  26. string s;
  27. while(cin>>from>>to>>s)
  28. {
  29. //cout<<"s = "<<s<<endl;
  30. //int res=decimal(s,from);
  31. if(s[0]=='0')
  32. {
  33. cout<<s<<" base "<<from<<" = 0 base "<<to<<endl;
  34. //pf("%s base %d = 0 base %d\n",s,from,to);
  35. }
  36.  
  37. else
  38. {
  39. int flag;
  40. int m,n=0;
  41. ull sum=0;
  42. for( int i=s.length()-1; i>=0; i--)
  43. {
  44. flag=0;
  45. if(s[i]=='A') m=10;
  46. else if(s[i]=='B') m=11;
  47. else if(s[i]=='C') m=12;
  48. else if(s[i]=='D') m=13;
  49. else if(s[i]=='E') m=14;
  50. else if(s[i]=='F') m=15;
  51. else
  52. {
  53. m=s[i]-'0';
  54. }
  55.  
  56. if(m>=from)
  57. {
  58. //cout<<"m = "<<m<<" from = "<<from<<endl;
  59. flag=1;
  60. break;
  61. }
  62. sum+=m*pow(from,n++);
  63. }
  64. //cout<<"flag = "<<flag<<endl;
  65. if(flag)
  66. {
  67. //pf("%s is an illegal base %d number ",s,from);
  68. cout<<s<<" is an illegal base "<<from<<" number"<<endl;
  69. }
  70. else
  71. {
  72. //cout<<"flag = "<<flag<<endl;
  73. ull keep=sum;
  74. //cout<<"sum = "<<sum<<endl;
  75. char temp[1000];
  76. int p;
  77.  
  78. int t=0;
  79. while(keep)
  80. {
  81. p=keep%to;
  82. if(p==10) temp[t++]='A';
  83. else if(p==11) temp[t++]='B';
  84. else if(p==12) temp[t++]='C';
  85. else if(p==13) temp[t++]='D';
  86. else if(p==14) temp[t++]='E';
  87. else if(p==15) temp[t++]='F';
  88. else
  89. {
  90. temp[t++]=p+'0';
  91. }
  92. keep/=to;
  93. //cout<<"p = "<<p<<"keep = "<<keep<<endl;
  94. }
  95. string result="";
  96. for(int j=t-1; j>=0; j--)
  97. {
  98. //cout<<temp[j];
  99. result+=temp[j];
  100.  
  101. }
  102. cout<<s<<" base "<<from<<" = "<<result<<" base "<<to<<endl;
  103. // pf("%s base %d = %s base %d\n",s,from,result,to);
  104. }
  105. }
  106. }
  107. }
  108. //return sum;
  109.  
  110. // cou
  111.  
  112.  
Success #stdin #stdout 0s 4536KB
stdin
2 10 10101
5 3 126
15 11 A4C
stdout
10101 base 2 = 21 base 10
126 is an illegal base 5 number
A4C base 15 = 1821 base 11