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;
	}
}

更多推荐