题解 B2141 【确定进制】
题目大意
给定
p,q,r ,确定一个进制使得p\times q=r 。
题解
题目中有一个条件:
考虑一个进制
以
如法炮制,分别将
要注意的是,虽然题目上写出了
参考代码
#include<bits/stdc++.h>
#define up(l,r,i) for(int i=l,END##i=r;i<=END##i;++i)
#define dn(r,l,i) for(int i=r,END##i=l;i>=END##i;--i)
using namespace std;
typedef long long i64;
const int INF =2147483647;
i64 p,q,r,o,pp,qq,rr,s;
int main(){
scanf("%d%d%d",&p,&q,&r);
pp=p,qq=q,rr=r;
while(pp) s=max(s,pp%10),pp/=10;
while(qq) s=max(s,qq%10),qq/=10;
while(rr) s=max(s,rr%10),rr/=10;
up(s+1,16,t){
pp=p;i64 a=0; o=1; while(pp) a+=o*(pp%10),o*=t,pp/=10;
qq=q;i64 b=0; o=1; while(qq) b+=o*(qq%10),o*=t,qq/=10;
rr=r;i64 c=0; o=1; while(rr) c+=o*(rr%10),o*=t,rr/=10;
if(a*b==c) printf("%d\n",t),exit(0);
}
puts("0");
return 0;
}