题目链接地址:1010. Radix (25)
暴力破解,只得了22分,已知足了,只可惜是个半成品!!!复试之后再写吧。。
#include <iostream> #include <map> #include <queue> #include <stdio.h> #include <vector> #include <algorithm> #include <stack> #include <stdlib.h> #include <string.h> #include <math.h> #include <string> using namespace std; int p1(char *p,int radix) { int len=strlen(p); int digit = 0; int m = 1; int sum = 0; for(int i=len-1;i>=0;i--) { if(p[i]>='a'&&p[i]<='z') { digit= p[i] - 'a' + 10; if(digit>=radix) break; } else if(p[i]>='0'&& p[i]<='9'){ digit=p[i] - '0'; if(digit>=radix) break ; } sum+=digit*m; m*=radix; } return sum; } int max(int x,int y){ return x<y?y:x; } int main(){ int n,m,p,q; char c1[10],c2[10]; scanf("%s%s%d%d",c1,c2,&p,&q); int flag=0; int l1=strlen(c1); int l2=strlen(c2); int l=max(l1,l2); if(p==1){ int i; int n1=p1(c1,q); for(i=1;i<10000;i++){ //int n2=p1(c2,i); if(n1==p1(c2,i)){ cout<<i<<endl; break; } } if(i==10000) cout<<"Impossible"<<endl; }else{ int n1=p1(c2,q); int i; for(i=1;i<10000;i++){ int n2=p1(c1,i); if(n1==n2){ cout<<i<<endl; break; } } if(i==10000) cout<<"Impossible"<<endl; } return 0; }</span>