本文共 723 字,大约阅读时间需要 2 分钟。
进制转换
#include
int P; char w[36]; string change(int n) { string s; while (n) { s += w[n % P]; n /= P; } reverse(s.begin(), s.end()); return s; }
int main() { cin >> P; for (int i = 0; i <= 9; i++) w[i] = (char)('0' + i); for (int i = 10; i <= 35; i++) w[i] = (char)('A' + i - 10); for (int i = 1; i < P; i++) { for (int j = 1; j <= i; j++) { cout << w[i] << '*' << w[j] << '=' << change(i * j) << ' '; } cout << endl; } return 0; }
题解
进制转换是解决本题的关键。我们需要将十进制数转换为给定进制数,以便正确生成乘法表。具体来说,函数change(int n)负责将十进制数n转换为P进制字符串。转换过程如下:首先,用模运算获取每一位的数字,接着将这些数字按顺序拼接成字符串。最后,通过reverse函数将字符串反转,得到正确的P进制表示。
在main函数中,我们首先读取进制数P。然后为数字0-9和字母A-Z分配相应的字符。接下来,遍历每一个可能的乘数i和j,生成对应的乘法表条目。使用change函数将乘积i*j转换为P进制,并按照指定的格式输出结果。
转载地址:http://dcopz.baihongyu.com/