[蓝桥杯 2020 省 AB3] 乘法表

题目描述

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

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

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

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

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

输入格式

输入一个整数 P。

输出格式

输出 P 进制下的乘法表。P 进制中大于等于 10 的数字用大写字母 A、B、C、..... 表示。

输入输出样例

输入

4

输出

1*1=1

2*1=2 2*2=10

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

输入

8

输出

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。

蓝桥杯 2020 第三轮省赛 AB 组 G 题。

#include<iostream>
#include<string>
using namespace std;
string ten_to_x(int n,int x)  //10进制转x进制 
{
    string s;
    while(n)
    {
        if(n%x<10)
        {
            s+=n%x+'0';
        }
        else
        {
            s+=n%x+'A'-10;
        }
        n/=x;
    }
    int len=s.length();
    string t;
    for(int i=len-1;i>=0;i--)
    {
        t+=s[i];
    }
    return t;
}
int main()
{
    int p;
    cin>>p;
    for(int i=1;i<p;i++)
    {
        for(int j=1;j<=i;j++)
        {
            string s=ten_to_x(i*j,p);
             cout<<ten_to_x(i,p)<<"*"<<ten_to_x(j,p)<<"="<<s<<" ";
        }
        cout<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_73648729/article/details/129270445