【洛谷】P1604 B进制星球

阅读: 评论:0

【洛谷】P1604 B进制星球

【洛谷】P1604 B进制星球

题目地址:

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

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

输出格式:
一个 B B B进制数,表示输入的两个数的和。

高精度加法直接模拟即可。代码如下:

#include <iostream>
#include <algorithm>
using namespace std;int k;
string res;#define to_int(x) ('A' <= x && x <= 'Z' ? x - 'A' + 10 : x - '0')
#define to_char(x) (x <= 9 ? x + '0' : x - 10 + 'A')int main() {scanf("%d", &k);string a, b;cin >> a >> b;reverse(a.begin(), a.end());reverse(b.begin(), b.end());int t = 0;for (int i = 0; i < a.size() || i < b.size(); i++) {if (i < a.size()) t += to_int(a[i]);if (i < b.size()) t += to_int(b[i]);res += to_char(t % k);t /= k;}if (t) res += '1';reverse(res.begin(), d());cout << res << endl;
}

时空复杂度 O ( max ⁡ { l A , l B } ) O(max{l_A,l_B}) O(max{lA​,lB​}), l A , l B l_A,l_B lA​,lB​分别表示两个数的位数。

本文发布于:2024-01-27 22:39:03,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063663443069.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:星球   洛谷
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23