-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反。编程求此自然数,并输出显示。
输入
- 无。 输出
-
三行:
第一行是此自然数的十进制表示;
第一行是此自然数的七进制表示;
第一行是此自然数的九进制表示。
样例输入
-
(无)
样例输出
-
(不提供)
思路灰常简单,首先要保证这个数字在十进制,七进制,九进制中都是三位数。
那么七进制里最大的三位数肯定比十进制和九进制小,
同理,九进制里的三位数最小的比七进制大,
七进制最大的三位数是666转换成十进制就是342
九进制最小的三位数是100转换成十进制就是81
这样就确定了for循环的范围,
接着在循环里遍历这个区间里的每个十进制数,把每个数都分别转换成七进制和九进制,判断,最后输出就可以了
十进制转换成七进制就是,
先假设七进制的个十百位分别为ge,shi,bai
bai = 原数/7的平方,此时有一个余数1
shi = 余数1/7,此时有一个余数2
ge = 余数2/1
九进制思路一样,详细见代码啦
#include<iostream>
using namespace std;
int main(){
int n;
int ge,shi,bai;//7进制的个位十位百位
int one,two,thr;//9进制的个位十位百位
for(int i=81;i<=342;++i){
//先转化为7进
bai = i/49; shi = i%49;
ge = shi%7; shi = shi/7;
//转9
thr = i/81; two = i%81;
one = two%9; two = two/9;
if(bai==one&&shi==two&&ge==thr) cout<<i<<endl<<bai<<shi<<ge<<endl<<thr<<two<<one<<endl;
}
return 0;
}
输出是
248
503
305
顺便一提,直接按格式cout这三个数也可以过,诶嘿嘿~