【题目链接】
OpenJudge NOI 1.13 14:求满足条件的3位数
【题目考点】
1. 枚举
2. 数字拆分
【解题思路】
整体思路为枚举。
x从小到大遍历,
x
2
x^2
x2为这个完全平方数。 结果是三位数,所以x的最小值为10,
x
2
x^2
x2最大值小于1000。
每次循环,先求
x
2
x^2
x2得到一个完全平方数,然后对这个数字做数字拆分,将其拆分为个位,十位,百位。判断这三位数字是否存在两位相同的情况。
如果该数字是满足条件的,则计数。
如果计数达到n,则输出这个第n个满足条件的数字。
【题解代码】
解法1:枚举
#include <iostream>
using namespace std;
int main()
{
int n, i = 0, x = 10, num, g, s, b;
cin >> n;
for(int x = 10; x*x < 1000; x++)
{
num = x*x;//一个完全平方数
g = num%10;//个位
s = num/10%10;//十位
b = num/100;//百位
if(g == s || g == b || s == b)//如果存在2位相同
{
++i;//数字num是第i个符合条件的数字
if(i == n)
{
cout << num;
return 0;
}
}
}
return 0;
}