SP8624 题解
SP8624 题解
科普时间
整型有
- 十进制: 都是以
0\sim 9 这九个数字组成,不能以0 开头。 - 二进制: 由
0 和1 两个数字组成。 - 八进制: 由
0\sim7 数字组成,为了区分与其他进制的数字区别,开头都是以0 开始。 - 十六进制:由
0\sim9 和A\sim F 组成。为了区分于其他数字的区别,开头都是以0x 开始。
一、十进制转换为二进制、八进制、十六进制
1、十进制转二进制
(1)十进制转二进制的转换原理:除以
(2)具体做法:
将某个十进制数除
2、十进制转八进制
(1)转换原理:除以
(2)具体步骤与二进制一样
例如:十进制数
3、十进制转十六进制
(1)转换原理:除以
(2)具体步骤也和二进制、八进制一样,重复上述做法即可得到十六进制数。
例如:十进制数
小结:以上几种进制的整数部分转换原理都是除进制数取余数,倒序输出。
4、八进制、十六进制、二进制的转化
- 八进制转二进制:
原理:八进制数的一位是二进制数的三位,将每一位用三位二进制数表示。
- 十六进制与二进制互换:
原理:将二进制数转换为等值的十六进制数称为二-十六进制转换,采用的方法是“四位一组法”,因为四位二进制数恰好有
16 个状态,分别对应十六制数的16 个数码。
也就是说,“四位一组法”就是从低位到高位依次将每
将十六进制数转换为等值的二进制数称为十六-二进制转换。其转换方法刚好和二转十六相反,只要将十六进制数的每
题目分析
根据题意,
输入三个值
按照题目模拟,处理
UKE Code
#include<bits/stdc++.h>
using namespace std;
int t,p,b,x,y;
string xx1,xx2;
string uke(int a) {
string zzy;
while(a) {
zzy+='0'+(a%b);
a/=b;
}
return zzy;
}
int main() {
cin>>t;
while(t-1) {
cin>>x>>p>>y>>b;
xx1=uke(x);
xx2=uke(y);
if(xx2.size()>xx1.size())
swap(xx1,xx2);
int zrxsba=1,zzy=0;
int asd1=xx1.size();
int asd2=xx2.size();
for(int i=0; i<asd2; i++)
xx1[i]=((xx1[i]-'0'+xx2[i]-'0')%b)+'0';
for(int i=0; i<asd1; i++) {
zzy+=(zrxsba*(xx1[i]-'0'));
zrxsba*=b;
}
cout<<p<<' '<<zzy<<endl;
}
return 0;
}
// by 1013713 10/14 09:55,2023