是要求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;
}
꒰ᐢ⸝⸝•༝•⸝⸝ᐢ꒱
本篇题解是为了自己能够加深印象方便以后理解的,如果又不好的地方就请及时告诉蒟蒻,如果能帮助到其他人就更好了
若有侵权,立删