洛谷 P1604 B进制星球 高精度多进制加法

P1604 B进制星球

  • 时空限制1s / 128MB

题目背景

进制题目,而且还是个计算器~~

题目描述

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

输入输出格式

输入格式:

共3行第1行:一个十进制的整数,表示进制B。第2-3行:每行一个B进制数正整数。数字的每一位属于{0,1,2,3,4,5,6,7,8,9,A,B……},每个数字长度<=2000位。

输出格式:

一个B进制数,表示输入的两个数的和。

输入输出样例

输入样例#1:

4
123
321

输出样例#1:

1110

说明

进制计算器

------------------------------------------------------------------------------------------------------

套路依旧是那个套路,只是模数和除数变了而已

AC代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<iostream>
 4 #define maxn 2333
 5 using namespace std;
 6 struct BigNum{
 7     int s[maxn],len;
 8     BigNum(){len=1;memset(s,0,sizeof(s));}
 9 };
10 BigNum a,b,c;
11 int n;
12 char ai[maxn],bi[maxn];
13 void add(BigNum*,BigNum*,BigNum*);
14 int main(){
15     scanf("%d",&n);
16     scanf(" %s %s",ai,bi);
17     a.len=strlen(ai);
18     b.len=strlen(bi);
19     for(int i=a.len-1;i>=0;i--)
20        if(‘0‘<=ai[i]&&ai[i]<=‘9‘) a.s[a.len-i]=ai[i]-48;
21        else a.s[a.len-i]=ai[i]-‘A‘+10;
22     for(int i=b.len-1;i>=0;i--)
23        if(‘0‘<=bi[i]&&bi[i]<=‘9‘) b.s[b.len-i]=bi[i]-48;
24        else b.s[b.len-i]=bi[i]-‘A‘+10;
25     add(&a,&b,&c);
26     for(int i=c.len;i>0;i--)
27        if(0<=c.s[i]&&c.s[i]<=9) printf("%d",c.s[i]);
28        else printf("%c",‘A‘+c.s[i]-10);
29     return 0;
30 }
31 void add(BigNum *x,BigNum *y,BigNum *z){
32     z->len=max(x->len,y->len);
33     for(int i=1;i<=z->len;i++){
34         z->s[i]+=x->s[i]+y->s[i];
35         z->s[i+1]=z->s[i]/n;
36         z->s[i]%=n;
37     }
38     if(z->s[z->len+1]) z->len++;
39 }

高精度进制加法

时间: 2024-10-15 14:31:33

洛谷 P1604 B进制星球 高精度多进制加法的相关文章

洛谷——P1604 B进制星球

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

洛谷 P1604 B进制星球

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

B进制星球(多进制 高精加)

https://www.luogu.org/problemnew/show/P1604 B(2<=B<=36)进制计数.编写实现B进制加法的程序. 输入输出格式 输入格式: 共3行第1行:一个十进制的整数,表示进制B.第2-3行:每行一个B进制数正整数.数字的每一位属于{0,1,2,3,4,5,6,7,8,9,A,B--},每个数字长度<=2000位. 输出格式: 一个B进制数,表示输入的两个数的和. 思路: 输入的时候把A~Z换成数字 存, 输出的时候把数字换成 A~Z 输出 1 #i

洛谷 P1303 A*B Problem(高精度乘法) 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接 :https://www.luogu.org/problem/show?pid=1303 题目描述 求两数的积. 输入输出格式 输入格式: 两行,两个数. 输出格式: 积 输入输出样例 输入样例#1: 1 2 输出样例#1: 2 说明 每个数字不超过10^2000,需用高精 AC代码: 1 #include<cstdio> 2 #include<algorithm> 3 #include<iost

P1604 B进制星球

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

洛谷1017 进制转换

洛谷1017 进制转换 本题地址:http://www.luogu.org/problem/show?pid=1017 思路: 其实和普通的进制转换一样,只是要转换成负进制时,余数可能为负数.因此只要多加一个判断余数是否为负数,当余数为负数时,余数自减除数,商自增即可. 1 #include <cstdio> 2 #include <stack> 3 using namespace std; 4 void work(int n, int m) 5 { 6 int t; 7 stac

洛谷P1080 国王游戏 高精度 贪心 数学推公式

洛谷P1080 国王游戏        数学推公式      高精度    贪心 然而这并不是我打出来的,抄题解... 将左手与右手的乘积从小到大排序,然后计算求最大值即可.(需要高精度) 证明: 1)知道,如果相邻的两个人交换位置,只会影响到这两个人的值,不会影响他人 2)假设相邻的两个人i, i + 1.设A[i] B[i] <= A[i + 1] B[i + 1],i之前所有人的左手乘积为S. 则,ans1 = max{S / B[i], S * A[i] / B[i + 1]} 若交换

洛谷——P1062 数列

洛谷——P1062 数列 题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…) 请你求出这个序列的第N项的值(用10进制数表示). 例如,对于k=3,N=100,正确答案应该是981. 输入输出格式 输入格式: 输入文件只有1行,为2个正整数,用一个

【bzoj3240 &amp;&amp; 洛谷P1397】矩阵游戏[NOI2013](矩阵乘法+卡常)

题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3240 这道题其实有普通快速幂+费马小定理的解法……然而我太弱了,一开始只想到了矩阵乘法的方法. 首先定义两个矩阵: $ A_{1} = \begin{bmatrix} a & b \\ 0 & 1 \end{bmatrix} $ $ A_{2} = \begin{bmatrix} c & d \\ 0 & 1 \end{bmatrix} $ 于是我们就可以得到这样