P1604 B进制星球
P1604 B进制星球
题目描述
话说有一天,小 Z 乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用
输入格式
数据数据共三行。
第一行,一个十进制的整数,表示进制
第二行和第三行,每行一个
输出格式
一个
样例
输入
4
123
321
输出
1110
提示
数据范围及约定
记
对于全部数据,
思路
根据题目,每个数字长度小于等于
- 输入的字符中可能含有字母“
”,需要将其转换成数字。可以参考 表,字母“ ”的 码为 ,对应的数字是 ,相差 。因此输入的字符减去“ ”得到的整数存入高精度加数数组中。 - 当进制大于
时,计算出来的数字超过 ,需要使用“ ”表达,则输出的数字加上“ ”得到的整数强制转换为字符类型输出即可。
代码一:数组方式
#include <bits/stdc++.h>
using namespace std;
char s1[2010], s2[2010];
int lena, lenb, lenc, a[2010], b[2010], c[2010], base;
int main()
{
scanf("%d %s %s", &base, s1, s2);
lena = strlen(s1);
lenb = strlen(s2);
for (int i = 0; i < lena; i ++ )
{
if (s1[i] >= 'A')
a[lena - i] = s1[i] - 55;
else
a[lena - i] = s1[i] - '0';
}
for (int i = 0; i < lenb; i ++ )
{
if (s2[i] >= 'A')
b[lenb - i] = s2[i] - 55;
else
b[lenb - i] = s2[i] - '0';
}
lenc = max(lena, lenb);
for (int i = 1; i <= lenc; i ++ )
{
c[i] += a[i] + b[i];
c[i + 1] = c[i] / base;
c[i] = c[i] % base;
}
if (c[lenc + 1] > 0)
lenc ++;
for (int i = lenc; i >= 1; i -- )
{
if (c[i] < 10)
printf("%d", c[i]);
else
printf("%c", char(c[i] + 55));
}
return 0;
}
代码二:结构体重载运算符
#include <bits/stdc++.h>
using namespace std;
int base, lenx, leny;
char x[20010], y[20010];
struct node
{
int len, s[20010];
node()
{
len = 0;
memset(s, 0, sizeof(s));
}
} a, b, c;
node operator + (const node &a, const node &b)
{
node c;
c.len = max(a.len, b.len);
for (int i = 1; i <= c.len; i ++ )
{
c.s[i] += a.s[i] + b.s[i];
c.s[i + 1] += c.s[i] / base;
c.s[i] %= base;
}
if (c.s[c.len + 1])
c.len ++;
return c;
}
void print(node a)
{
for (int i = a.len; i >= 1; i -- )
{
if (a.s[i] >= 10)
printf("%c", char(a.s[i] + 55));
else
printf("%d", a.s[i]);
}
}
int main()
{
scanf("%d %s %s", &base, x + 1, y + 1);
lenx = strlen(x + 1);
leny = strlen(y + 1);
a.len = lenx;
for (int i = 1; i <= lenx; i ++ )
{
if (x[i] >= 'A')
a.s[lenx - i + 1] = x[i] - 55;
else
a.s[lenx - i + 1] = x[i] - '0';
}
b.len = leny;
for (int i = 1; i <= leny; i ++ )
{
if (y[i] >= 'A')
b.s[leny - i + 1] = y[i] - 55;
else
b.s[leny - i + 1] = y[i] - '0';
}
c = a + b;
print(c);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】