求助,不知道哪里错了

P1143 进制转换

本地也能过第一个数据点
by liukelin @ 2024-02-25 11:43:54


```cpp #include <stdio.h> #include <string.h> int qiushijinzhi(int n,char* a){ int b=1;int shijinzhi=0; for(int i=strlen(a)-1;i>=0;i--) { if(a[i]>='0'&&a[i]<='9') { shijinzhi=shijinzhi+(a[i]-'0')*b; b=b*n; } else { shijinzhi=shijinzhi+(a[i]-'A'+10)*b; b=b*n; } } return shijinzhi; } void zhuanhuan(int b_,int shijinzhi) { int g=0; char d[17]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char f[1000]={"1"}; while(shijinzhi) { int n=shijinzhi%b_; shijinzhi=shijinzhi/b_; f[g]=d[n]; g++; } for(int i=g-1;i>=0;i--) { printf("%c",f[i]); } } int main () { int n;scanf("%d",&n); char a[1000];scanf("%s",a); int b_;scanf("%d",&b_); int shijinzhi=qiushijinzhi(n,a); zhuanhuan(b_,shijinzhi); return 0; } `````` AC代码
by HEROBRINEH @ 2024-02-25 11:59:24


满分代码奉上: ```cpp #include<bits/stdc++.h> using namespace std; string a; int c[10000000],d,e,f,g,sum,ans; int main(){ scanf("%d",&d); cin>>a; scanf("%d",&f); for(int x=0;x<a.size();x++){ if(a[x]<'A'){ e=pow(d,a.size()-x-1); e*=(a[x]-'0'); sum+=e; } else{ e=pow(d,a.size()-1-x); e*=(a[x]-'A'+10); sum+=e; } } while(sum>0){ c[g++]=sum%f; sum/=f; } for(int x=g-1;x>=0;x--){ if(c[x]>=10)printf("%c",c[x]+'A'-10); else printf("%d",c[x]); } } ```
by T_Z_H @ 2024-02-25 12:03:32


@[G2_m0NSEY](/user/981822) 你读入字符串写挂了,其实可以 `cin>>s1`,然后 `i=strlen(s1)`。 就是说 `i` 是 `s1` 的长度
by QWQ_123 @ 2024-02-25 12:11:11


@[T_Z_H](/user/983251) @[HEROBRINEH](/user/1113507) Ta是问哪里错了,不是要代码欸
by QWQ_123 @ 2024-02-25 12:11:41


@[QWQ_123](/user/740328) @[T_Z_H](/user/983251) @[HEROBRINEH](/user/1113507) 感谢帮助
by liukelin @ 2024-02-25 12:54:25


|