25pts HELP!
查看原帖
25pts HELP!
338147
01bit楼主2020/8/23 11:24
#include<cstdio>
#include<cstring>
using namespace std;
char*strrev(char*s){
    int len=strlen(s);
    for(int i=0;i<len/2;i++){
        char temp=s[i];
        s[i]=s[len-i-1];
        s[len-i-1]=temp;
    }
    return s;
}
int cti[127+1];
char itc[16];
void init(){
    cti['0']=0;
    cti['1']=1;
    cti['2']=2;
    cti['3']=3;
    cti['4']=4;
    cti['5']=5;
    cti['6']=6;
    cti['7']=7;
    cti['8']=8;
    cti['9']=9;
    cti['A']=10;
    cti['B']=11;
    cti['C']=12;
    cti['D']=13;
    cti['E']=14;
    cti['F']=15;
    itc[0]='0';
    itc[1]='1';
    itc[2]='2';
    itc[3]='3';
    itc[4]='4';
    itc[5]='5';
    itc[6]='6';
    itc[7]='7';
    itc[8]='8';
    itc[9]='9';
    itc[10]='A';
    itc[11]='B';
    itc[12]='C';
    itc[13]='D';
    itc[14]='E';
    itc[15]='F';
}
bool STEP(int N,char*M){
    char add1[101],add2[101],sum[101];
    strcpy(add1,M);
    strcpy(add2,M);
    strrev(add2);
    int x=0;
    for(int i=0;i<strlen(add1);i++){
        int a1=cti[add1[i]],a2=cti[add2[i]];
        sum[i]=a1+a2+x;
        x=sum[i]/N;
        sum[i]%=N;
        sum[i]=itc[sum[i]];
    }
    if(x!=0)sum[strlen(add1)]=itc[x];
    strcpy(M,sum);
    strrev(M);
    printf("%s+%s=%s\n",add1,add2,M);
    return strcmp(M,sum)==0;
}
int main(){
    init();
    int N;
    char M[101];
    scanf("%d%s",&N,&M);
    for(int ans=1;ans<=30;ans++)
        if(STEP(N,M)){
            printf("STEP=%d",ans);
            return 0;
        }
    printf("Impossible!");
    return 0;
}
2020/8/23 11:24
加载中...