PAT 乙级 1022.D进制的A+B C++/Java
2024-09-07 05:18:54
1022 D进制的A+B (20 分)
输入两个非负 10 进制整数 A 和 B (≤),输出 A+B 的 D (1)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
进制转换(P进制转Q进制):
步骤:
1. 将P进制数转成10进制
给定一个2进制数1011,将其转成10进制: $1*10^3 + 1*10^2 +0*10^1+1*10^0$ = 11
C++实现:
// P进制转10进制
int PtoTen(int x, int P)
{
int result = ;
int product = ;
while (x != )
{
result = result + (x % ) * product;
x = x / ;
product = product * P;
}
return result;
}
2.将10进制数转成Q进制
采用“除基(Q)取余法”
给定一个10进制数:17,将其转成2进制
17 / 2 = 8, 余1
8 / 2 = 4 余0
4 / 2 = 2 余0
2 / 2 = 1 余0
1 / 2 = 0 余1
计算结束
接着将余数从后往前(从下往上)输出,得到的10001就是17的二进制数
C++实现
// 10进制转Q进制
void tenToQ(int x, int Q)
{
vector<int> left; //保存余数
do
{
left.push_back(x % Q);
x /= Q;
} while (x != );
//反向输出余数
for (auto it = left.rbegin(); it != left.rend(); ++it)
{
cout << *it;
}
}
注意:用do while是因为,如果10进制数恰好等于0,应该输出余数0,如果是while循环,则不会保存余数
题目分析:
将A和B相加,再按照上面的内容转化成D进制就可以了
#include <iostream>
#include <vector>
using namespace std; void tenToQ(int x, int Q)
{
vector<int> left;
do
{
left.push_back(x % Q);
x /= Q;
} while (x != ); for (auto it = left.rbegin(); it != left.rend(); ++it)
{
cout << *it;
}
} int main()
{
int A, B, D;
cin >> A >> B >> D;
tenToQ(A + B, D);
return ;
}
最新文章
- 解决CHROME中画布中无法显示图片的方法
- NAS硬盘损坏拷贝时的处理办法及 UBUNTU下遍历删除某目录的方法
- Oracle开发常用函数与存储过程
- git项目版本管理
- 在struts-config.xml中配置validator-plugin导致404 Servlet action is not available
- c 按范围快速指定整数
- Java学习笔记之:Java数组
- JS远程获取网页源代码的例子
- C# winform 右下角弹窗
- linux的文本管道连接处理技巧
- jvm的垃圾回收几种理解
- 前端如何处理emoji表情
- 多线程/多进程/异步IO
- 以springMVC为例获取上传视频文件时长
- [03-01]JDBC基础
- 在vue.js 中使用animate.css库
- 如何配置nginx屏蔽恶意域名解析指向《包含隐藏nginx版本号》
- 前端跨域问题的总结&;&;nodejs 中间层的路由转发
- ECMAScript6 入门 Module
- Docker:Windows7下使用docker toolbox(1)
热门文章
- C++ 重写虚函数的代码使用注意点+全部知识点+全部例子实现
- 图、流程图、ER图怎么画及常见画图工具(流程图文章汇总)
- 调用 Dll 中的函数时,出现栈(STACK)的清除问题 ->; 故障模块名称: StackHash_0a9e
- k8s之发布管理架构图01
- SpringMvc通过controller上传文件代码示例
- spark listener
- prometheus使用postgresql-adapter连接postgresql
- 2019 ICPC 银川站
- PHP 将字符串中的数字转化为数组
- Android.mk文件官方使用说明