设为首页 加入收藏

TOP

【PAT】B1074 宇宙无敌加法器(20 分)
2018-10-21 18:08:30 】 浏览:44
Tags:PAT B1074 宇宙 无敌 法器 20分

打一开始做就听人说这个难,吓得我把它放到了最后做,不过如此嘛。
这里说说样例的坑点
1.最后结果可能高位有0;例如样例结果07201
2.结果会进位,
3.有可能结果是0,(此处取决于你的输出方式)

#include<cstdio>
#include<string.h>
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
int main(){
    char jinzhibiao[21]={'\0'};
    scanf("%s",jinzhibiao);     //输入进制表
    getchar();                  //接受第一行的换行符
    char num1[21]={'\0'},num2[21]={'\0'};
    scanf("%s",num1);
    getchar();
    scanf("%s",num2);
    reverse(jinzhibiao,jinzhibiao+strlen(jinzhibiao));
    reverse(num1,num1+strlen(num1));
    reverse(num2,num2+strlen(num2));
    int flag=0;//进位
    int final[21]={0},wei=0;
    for(int i=0;i<strlen(jinzhibiao);i++){
        int jinzhi;//取出当前位的进制数
        if(jinzhibiao[i]=='0') jinzhi=10;
        else if(isdigit(jinzhibiao[i])) jinzhi=jinzhibiao[i]-'0';
        int n1= (num1[i]=='\0')?0:(num1[i]-'0');
        int n2= (num2[i]=='\0')?0:(num2[i]-'0');
        int n=n1+n2+flag;//当前位的结果;
        flag=n/jinzhi;
        final[wei++]=n%jinzhi;
    }
    if(flag!=0) final[wei++]=flag;
    flag=0;
    for(int i=wei-1;i>=0;i--){
        if(final[i]==0&&flag==0) continue;
        if(final[i]!=0) flag=1;
        printf("%d",final[i]);

    }
    if(flag==0) printf("0");
    return 0;
}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【PAT】B1073 多选题常见计分法(.. 下一篇2018.8.17题解 2018暑假集训之纸牌

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目