乘法表

本文最后更新于:5 分钟前

[蓝桥杯 2020 省 AB3] 乘法表

题目描述

九九乘法表是学习乘法时必须要掌握的。在不同进制数下,需要不同的乘法表。

例如, 四进制下的乘法表如下所示:

1
2
3
1*1=1
2*1=2 2*2=10
3*1=3 3*2=12 3*3=21

请注意,乘法表中两个数相乘的顺序必须为样例中所示的顺序,不能随意交换两个乘数。

给定 P,请输出 P 进制下的乘法表。

输入格式

输入一个整数 P。

输出格式

输出P 进制下的乘法表。P 进制中大于等于 10 的数字用大写字母 ABC、…表示。

样例 #1

样例输入 #1

1
4

样例输出 #1

1
2
3
1*1=1
2*1=2 2*2=10
3*1=3 3*2=12 3*3=21

样例 #2

样例输入 #2

1
8

样例输出 #2

1
2
3
4
5
6
7
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<=36。

理解

直接模拟就行,注意这里大于9时,要转换为字母。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include<cstdio>
#include <sstream>
#include<algorithm>
#include<cmath>
#include<string>
#include<set>

using namespace std;

int p;

int main()
{
int p;
cin>>p;
for(int i=1;i<p;i++)
{
for(int j=1;j<=i;j++)
{
int a=i*j/p;
int b=i*j%p;
int s=a*10+b;
if(p<=10)
printf("%d*%d=%d ",i,j,s);
if(p>10)
{
if(i<10)cout<<i<<"*";
else cout<<char('A'+i-10)<<"*";
if(j<10)cout<<j<<"=";
else cout<<char('A'+j-10)<<"=";
if(a>=10)cout<<char('A'+a-10);
else
{
if(a!=0)cout<<a;
}
if(b>=10)cout<<char('A'+b-10)<<" ";
else cout<<b<<" ";
}
}
puts("");
}
return 0;
}


乘法表
http://example.com/2023/04/24/乘法表/
作者
zzh
发布于
2023年4月24日
更新于
2023年4月25日
许可协议
原文链接: HTTPS://ZHANGZHIHAO-BLOG.GITHUB.IO
版权声明: 转载请注明出处!