提交时间:2024-08-19 22:53:24
运行 ID: 168129
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; inline ll read(){ ll x=0; int f=0,ch=0; while(ch<48||ch>57) f=(ch=='-'),ch=getchar(); while(ch>47&&ch<58) x=(x<<3)+(x<<1)+(ch&15),ch=getchar(); return f?-x:x; } inline void write(ll x,char end='\n'){ if(x==0){ putchar('0'); putchar(end); return; } if(x<0) putchar('-'),x=-x; int ch[40]={0},cnt=0; while(x){ ch[cnt++]=(int)(x%10); x/=10; } while(cnt--) putchar(ch[cnt]+48); putchar(end); } int dic[150]; char p[20],q[20],r[20]; int s[20]; int main(){ for(int i='0';i<='9';++i) dic[i]=i-'0'; for(int i='A';i<='F';++i) dic[i]=i-'A'+10; scanf("%s%s%s",p,q,r); int lp=strlen(p),lq=strlen(q),lr=strlen(r); for(int i=0;i+i<lp;++i) swap(p[i],p[lp-i-1]); for(int i=0;i+i<lq;++i) swap(q[i],q[lq-i-1]); for(int i=0;i+i<lr;++i) swap(r[i],r[lr-i-1]); for(int i=0;i<lp;++i) p[i]=dic[p[i]]; for(int i=0;i<lq;++i) q[i]=dic[q[i]]; for(int i=0;i<lr;++i) r[i]=dic[r[i]]; for(int b=2;b<=16;++b){ for(int i=0;i<lp;++i){ for(int j=0;j<lq;++j){ s[i+j]+=(int)p[i]*q[j]; } } int len=lp+lq-1; for(int i=0;i<len;++i) s[i+1]+=s[i]/b,s[i]%=b; while(s[len]) s[len+1]+=s[len]/b,s[len]%=b,++len; if(len==lr){ bool flag=1; for(int i=0;i<len;++i){ if(s[i]!=r[i]){ flag=0; break; } } if(flag){ printf("%d\n",b); return 0; } } for(int i=0;i<len;++i) s[i]=0; } puts("0"); return 0; }