【ブルーブリッジカップ2020 県AB3】九九表

トピックの説明

九九の九九は、掛け算を学ぶときに必ずマスターしなければなりません。基数が異なると、異なる乗算表が必要になります。

たとえば、4 進数の九九は次のようになります。

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

九九で 2 つの数値を掛ける順序は、例に示した順序でなければならず、2 つの乗数を任意に入れ替えることはできないことに注意してください。

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地方大会3回戦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