[蓝桥杯 2020 省 AB3] 乘法表

       是要求p进制下的乘法表,也就是说乘数,被乘数和结果都是p进制的

        怎么将10进制转换为其他进制呢?

用短除法求余数,然后将求到的余数倒着输出就是转换为其他进制:

把每一个整除的结果传入求余数的函数上:

如果结果对10取余大于10的话就要大于的部分用字母代替(大写):

a%n+'A'-10

#include <iostream>
#include <algorithm>//reverse要用
using namespace std;
int n;
char trans(int a){
    if(a%n<10) return a%n+'0';
    return a%n+'A'-10;//大于10时用大写字母
}
string ten_to_k(int x){//10进制转k进制
	string a;//字符串存储
	for(int i=0;x>0;i++) a+=trans(x),x/=n;//短除法
	reverse(a.begin(),a.end());//翻转字符串,因为是从下往上
	return a;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<n;i++)
	{
		for(int j=1;j<=i;j++)
			cout<<ten_to_k(i)<<'*'<<ten_to_k(j)<<'='<<ten_to_k(i*j)<<' ';//循环输出
	cout << endl;
	    
	}
	return 0;
}

꒰ᐢ⸝⸝•༝•⸝⸝ᐢ꒱ ​​

本篇题解是为了自己能够加深印象方便以后理解的,如果又不好的地方就请及时告诉蒟蒻,如果能帮助到其他人就更好了

若有侵权,立删

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值