80分,求助

B3849 [GESP样题 三级] 进制转换

baihuo @ 2024-10-20 22:49:02


#include<bits/stdc++.h>
using namespace std;
int main(){
    long long int z=0,n;
    int r,a[200010];
    cin>>n>>r;
    if(n<r){
        if(n>=10){
            cout<<char(n+55);
        }else if(n<10){
            cout<<n;
        }
        return 0;
    }
    for(;n>=r;){
        z++;
        a[z]=n%r;
        n=n/r;
    }cout<<n;
    for(;z>0;z--){
        if(a[z]>=10){
            cout<<char(a[z]+55);
        }if(a[z]<10){
            cout<<a[z];
        }
    }
    return 0;
}

by one_four_three @ 2024-10-20 23:02:26

@baihuo

#include<bits/stdc++.h>
#define N 1000005
using namespace std;
int n,r;
char c[30],ans[N];
int main(){
    cin>>n>>r;
    for(int i=0;i<26;i++) c[i]=char(int('A')+i);//存一下每个数代表的字母 
    int tmp=1;
    while(n){
        if (n%r<10) ans[tmp]=char(n%r+'0');//n%r<10就直接是那个数 
        else ans[tmp]=c[n%r-10];//否则就是对应字母 
        tmp++;
        n/=r;
    }
    for(int i=tmp-1;i;i--) cout<<ans[i];//倒序输出 
    return 0;
}

求互关


by baihuo @ 2024-10-20 23:13:29

@one_four_three
已关注,谢谢


|