题目
题解
首先,不可能无限穷举
范围限定:七进制与九进制表示都是三位数
最大:888(9) = 728(10)
最小:100(7) = 49(10)
然后就是十进制转x进制的问题
n对x^a取模,就是对应x^a位上的数字,因为模出来的数不足x^a
然后n/=x^a;表示n将对x^(a+1)进行取模
重复此操作直至n=0。
代码
cpp
#include<bits/stdc++.h>
using namespace std;
//把n转换为x进制下的数
int turn(int n, int x) {
int ans = 0, a1 = 1;
while(n) {
ans += (n % x) * a1;
n /= x;
//要进位咯
a1 *= 10;
}
return ans;
}
int main(){
int n7, n9;
for(int i = 49; i <= 728; i ++) {
n7 = turn(i, 7);
n9 = turn(i, 9);
if(n7 / 100 == n9 % 10 && (n7 /10) % 10 == (n9 /10) % 10 && n9 / 100 == n7 % 10) {
printf("%d\n%d\n%d", i, n7, n9);
break;
}
}
return 0;
}