本地也能过第一个数据点
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