问题标题: 酷町堂:3861 快速进制转换 WA90

0
0
已解决
汪宇航
汪宇航
新手启示者
新手启示者

WA90...

#include <bits/stdc++.h>
using namespace std;
int main(){
    string a;
    char b[1010101];
    int cnt=0;
    cin>>a;
    int y=0,x=0;
    int xx=a.size()%4;
    if(xx!=0){
        for(int i=0;i<4-x;i++){
            a="0"+a;
        }
    }
    for(int i=a.size()-1;i>=0;i-=4){
        if((a[i]-'0'+(a[i-1]-'0')*2+(a[i-2]-'0')*4+(a[i-3]-'0')*8)+48>='0'&&(a[i]-'0'+(a[i-1]-'0')*2+(a[i-2]-'0')*4+(a[i-3]-'0')*8)+48<='9')b[++cnt]=(a[i]-'0'+(a[i-1]-'0')*2+(a[i-2]-'0')*4+(a[i-3]-'0')*8)+48;
        else b[++cnt]='A'+(a[i]-'0'+(a[i-1]-'0')*2+(a[i-2]-'0')*4+(a[i-3]-'0')*8)%10;
    }
    for(int i=cnt;i>=1;i--)cout<<b[i];
    return 0;
}

...

谁能给我第五个测试点

给测试点的话30豆!


0
已采纳
刘乐宸
刘乐宸
新手天翼
新手天翼

写个函数岂不更好?

string f(string bin) {
    if(bin.size()<=4) {
        int ans=0,j=1;
        for(int i=bin.size()-1; i>=0; i--) {
            ans += (bin[i]-'0')*j;
            j*=2;
        }
        return jz[ans];
    }
    string tmp = bin. substr(bin.size()-4, 4);
    string tmp2 = bin. erase(bin. size()-4, 4);
    return f(tmp2)+f(tmp);
}
int main() {

 

0
王文博
王文博
缔造者之神
缔造者之神

输入:

1001001110100010101101110111000100011111000000001110101010011101000101110

输出:

127456EE23E01D53A2E

我要回答