【C++ 真题】P8723 [蓝桥杯 2020 省 AB3] 乘法表
·
P8723 [蓝桥杯 2020 省 AB3] 乘法表
题目描述
九九乘法表是学习乘法时必须要掌握的。在不同进制数下,需要不同的乘法表。
例如, 四进制下的乘法表如下所示:
1*1=1
2*1=2 2*2=10
3*1=3 3*2=12 3*3=21
请注意,乘法表中两个数相乘的顺序必须为样例中所示的顺序,不能随意交换两个乘数。
给定 PPP,请输出 PPP 进制下的乘法表。
输入格式
输入一个整数 PPP。
输出格式
输出 PPP 进制下的乘法表。PPP 进制中大于等于 101010 的数字用大写字母 A、B、C、⋯\cdots⋯ 表示。
输入输出样例 #1
输入 #1
4
输出 #1
1*1=1
2*1=2 2*2=10
3*1=3 3*2=12 3*3=21
输入输出样例 #2
输入 #2
8
输出 #2
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=11
4*1=4 4*2=10 4*3=14 4*4=20
5*1=5 5*2=12 5*3=17 5*4=24 5*5=31
6*1=6 6*2=14 6*3=22 6*4=30 6*5=36 6*6=44
7*1=7 7*2=16 7*3=25 7*4=34 7*5=43 7*6=52 7*7=61
说明/提示
对于所有评测数据, 2≤P≤362 \leq P \leq 362≤P≤36。
蓝桥杯 2020 第三轮省赛 AB 组 G 题。
题解
#include "bits/stdc++.h"
using namespace std;
const int N = 1e3;
int n;
char s[N];
void change(int c){//化为n进制
int i = 0;
while(c/n != 0){
i++;
if(c%n >= 10) s[i] = c%n - 10 + 'A';
else s[i] = '0' + c%n;
c/=n;
}
i++;
if(c >= 10) s[i] = c - 10 + 'A';
else s[i] = '0' + c;
for(int j=i;j>=1;j--){
cout<<s[j];
}
}
int main(){
cin>>n;
for(int i=1;i<n;++i){
for(int j=1;j<=i;++j){
int a = i*j;
change(i);
cout<<"*";
change(j);
cout<<"=";
change(a);
cout<<" ";
}cout<<endl;
}
}
更多推荐



所有评论(0)