文章

34

粉丝

0

获赞

322

访问

5.9k

头像
十进制和二进制 题解:
P1176 清华大学上机题
发布于2026年3月5日 11:23
阅读数 529

#include <bits/stdc++.h>
using namespace std;

int main(){
    char s[2005],buf[3005];
    int num[3005];
    while(scanf("%s",s)!=EOF){
        int len=strlen(s);
        for(int i=0;i<len;i++){
            num[i]=s[i]-'0';
        }
        int i=0,len_str=0;
        while(i<len){
            buf[len_str++]=num[len-1]%2+'0';
            int c=0;
            for(int j=i;j<len;j++){
                int tmp=num[j];
                num[j]=(num[j]+c)/2;
                if(tmp%2==0) c=0;
                else c=10;
            }
            if(num[i]==0) i++;
        }
        char result[3005]={'0'};
        int res_len=1;//0
        for(int j=0;j<len_str;j++){
        int carry=0;
        for(int k=0;k<res_len;k++){
            int dight=(result[k]-'0')*2+carry;
            result[k]=dight%10+'0';
            carry=dight/10;
        }
        if(carry>0){
            result[res_len]=carry+'0';
            res_len++;
        }...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发