提交时间:2024-08-19 23:43:44

运行 ID: 168189

#include<bits/stdc++.h> using namespace std; int dic[150]; bool chen(int N,string a,string b,string c){ int x[100],y[100]; memset(x,0,sizeof(x)); memset(y,0,sizeof(y)); int la=a.length(); int lb=b.length(); for(int i=la-1;i>=0;i--){ x[la-1-i]=dic[a[i]]; } for(int i=lb-1;i>=0;i--){ y[lb-1-i]=dic[b[i]]; } int z[100]; memset(z,0,sizeof(z)); for(int i=0;i<la;i++){ for(int j=0;j<lb;j++){ z[i+j]+=x[i]*y[j]; } } int g=0; for(int i=0;i<90;i++){ z[i]+=g; g=0; while(z[i]>=N){ g++; z[i]-=N; } } int temp[100]; memset(temp,0,sizeof(temp)); int lc=c.length(); for(int i=lc-1;i>=0;i--){ temp[lc-1-i]=dic[c[i]]; } int lz=99; while(z[lz]==0){ lz--; if(lz==0){ break; } } lz++; if(lz!=lc){ return false; } for(int i=0;i<lc;i++){ if(z[i]!=temp[i]){ return false; } } return true; } string a,b,c; 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; cin>>a>>b>>c; int bo=-1; for(int i=2;i<=16;i++){ if(chen(i,a,b,c)){ bo=i; break; } } if(bo>1){ cout<<bo<<endl; } else{ cout<<0; } }