题目描述:
一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反。编程求此自然数,并输出显示。
输入格式:
无。
输出格式:
三行:
第一行是此自然数的十进制表示;
第一行是此自然数的七进制表示;
第一行是此自然数的九进制表示。
样例输入:
(无)
样例输出:
(不提供)
解题:
上过我前面基础课的同学都知道,对于一个三位数 i 来说,其百位、十位、个位数分别是:
百位 - i/100;
十位 - i%100/10;
个位 - i%10。
其实,对于其它进制的自然数来说,这个规律仍然有效。例如,如果把 i 换算成7进制数,其百位、十位、个位数分别是:
百位 - i/49;
十位 - i%49/7;
个位 - i%7。
最小的三位九进制数100,换成十进制数是9的2次方:81;最大的三位七进制数,换成十进制数是7的3次方-1:342。接下来尝试所有可能的自然数,直到找出符号条件的数字。
代码:
using namespace std;
int main()
{
for(int i=81;i<343;i++)
{
if(i/49==i%9 && i%49/7==i%81/9 && i%7==i/81)
{
cout <<i<<endl;
cout <<i/49<<i%49/7<<i%7<<endl;
cout <<i/81<<i%81/9<<i%9<<endl;
}
}
return 0;
}
转自公众号:
冉爸学堂