代码先锋网 代码片段及技术文章聚合

洛谷 P1604 B进制星球 2-36进制加法 高精度

技术标签: 数学问题

洛谷 P1604 B进制星球 2-36进制加法 高精度

题解:

这种题除了代码有点长,不好找错之外,思维上还是很简单的。

代码如下:

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<cmath>
#include<queue>
#include<cstring>
#include<vector>
#include<map>
#define MAX 5005
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;

int n;//n进制
string a,b;

string cal(string a,string b){//计算a+b;
    string res="";
    int i=a.length()-1,j=b.length()-1;
    int jw=0;
    while(i>=0&&j>=0){
        int tmp1,tmp2;
        if(a[i]>='0'&&a[i]<='9'){
            tmp1=a[i]-'0';
        }else{
            tmp1=a[i]-'A'+10;
        }
        if(b[j]>='0'&&b[j]<='9'){
            tmp2=b[j]-'0';
        }else{
            tmp2=b[j]-'A'+10;
        }
        int tmp=tmp1+tmp2+jw;
        if(tmp>=n){
            char ch;
            if(tmp-n>=0&&tmp-n<=9){
                ch=tmp-n+'0';
            }else{
                ch=tmp-n-10+'A';
            }
            res=ch+res;
            jw=1;
        }else{
            char ch;
            if(tmp>=0&&tmp<=9){
                ch=tmp+'0';
            }else{
                ch=tmp-10+'A';
            }
            res=ch+res;
            jw=0;
        }
        i--,j--;
    }

    while(i>=0){
        int tmp;
        if(a[i]>='0'&&a[i]<='9'){
            tmp=a[i]-'0';
        }else{
            tmp=a[i]-'A'+10;
        }
        tmp+=jw;
        if(tmp>=n){
            char ch;
            if(tmp-n>=0&&tmp-n<=9){
                ch=tmp-n+'0';
            }else{
                ch=tmp-n-10+'A';
            }
            res=ch+res;
            jw=1;
        }else{
            char ch;
            if(tmp>=0&&tmp<=9){
                ch=tmp+'0';
            }else{
                ch=tmp-10+'A';
            }
            res=ch+res;
            jw=0;
        }
        i--;
    }

    while(j>=0){
        int tmp;
        if(b[j]>='0'&&b[j]<='9'){
            tmp=b[j]-'0';
        }else{
            tmp=b[j]-'A'+10;
        }
        tmp+=jw;
        if(tmp>=n){
            char ch;
            if(tmp-n>=0&&tmp-n<=9){
                ch=tmp-n+'0';
            }else{
                ch=tmp-n-10+'A';
            }
            res=ch+res;
            jw=1;
        }else{
            char ch;
            if(tmp>=0&&tmp<=9){
                ch=tmp+'0';
            }else{
                ch=tmp-10+'A';
            }
            res=ch+res;
            jw=0;
        }
        j--;
    }
    if(jw!=0){
        res='1'+res;
    }
    return res;
}

int main(){
    cin>>n;
    cin>>a>>b;
    cout<<cal(a,b);
    return 0;
}
版权声明:本文为weixin_44123362原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44123362/article/details/104150137

智能推荐

P1604 B进制星球

题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。 现在小Z希望你可以帮助他,编写实现B进制加法的程序。 输入输出格式 输入格式:  ...

luogu P1604 B进制星球

https://www.luogu.org/problem/P1604 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。 现在小Z希望你可以帮助他,编写实现B进制加法的程序。 输入格...

P1604 B进制星球

题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。 现在小Z希望你可以帮助他,编写实现B进制加法的程序。 输入格式 共3行第1行:一个十进制的...

P1604 进制星球

 展开 题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。 现在小Z希望你可以帮助他,编写实现B进制加法的程序。 输入格式 共3行第...

P1604 B进制星球(C++)

题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。 现在小Z希望你可以帮助他,编写实现B进制加法的程序。 输入格式 共3行第1行:一个十进制的...

猜你喜欢

【高精度】B进制星球

【高精度】B进制星球 题目 题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。 现在小Z希望你可以帮助他,编写实现B进制加法的程序。 输入格式...

题目:洛谷1604 B进制星球(高精加法 R进制)

题目描述: 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。 现在小Z希望你可以帮助他,编写实现B进制加法的程序。 输入输出格式 输入格式: 共3行第1行:一个十进制的整数,表示进制B。第2-...

洛谷P1591 阶乘数码(高精度)//高精度加法、高精度乘法

//学习记录 //洛谷P1591 阶乘数码 #include #include const int N =10005 ; // 同一个数据出现多次,可抽象成一个变量 using namespace std; void jia(int p[],int q[],int m[]) { int a[N],b[N],c[N],x=0; //数组可能不够大 memset(a,0,sizeof(a)); mem...

P1601 A+B Problem(高精)(洛谷题解) 高精度加法

文章目录 题目描述 一、高精度加法 二、题解 1.字符数组置逆 2.值得注意的是... 3.运行与测试 写在最后 题目描述 高精度加法,相当于a+b problem,不用考虑负数. 输入格式 分两行输入。 a , b ≤ 1 0 500 a,b \leq 10^{500} a,b≤10500 500 输出格式 输出只有一行,代表a+b的值 输入#1 输出#1 输入#2 输出#2 一、高...

洛谷 P1604 模拟

https://www.luogu.org/problemnew/show/P1604 题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。 现...