#本人大一软件工程在读,妥妥的小菜鸟一枚,以下仅是我自己的学习心得,用来整理笔记用的,要是有什么错误,跪请各位大佬指正!!!🙏🙏🙏#
描述
编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为:
1.该数为完全平方数
2.该数至少有2位数字相同
例如,100同时满足上面两个条件。
输入
输入一个数n,n的大小不超过实际满足条件的3位数的个数。
输出
输出为第n个满足条件的3位数(升序)
解答:
其实就是一个很简单的思路,32的平方为四位数,10的平方是第一个四位数,所以从10到32逐个计算出它的平方,将各位上的数字分开放入另一个数组num中,判断是否有相同的数字,再判断是否符合条件并放入数组a中。输入n时,直接从数组a中调出来就好了。
代码:
#include <stdio.h>
int main(){
int a[50]={0};
int num[3]={0};
int n,p,i,m=0;
int n2=0;
int j=1;
for(n=10;n<32;n++){
p=n*n;
for(i=0,m=100;i<3;i++){
num[i]=p/m;
p=p%m;
m=m/10;
}
if(num[0]==num[1] || num[0]==num[2] || num[2]==num[1]){
a[j]=n*n;
j++;
}
}
scanf("%d", &n2);
printf("%d",a[n2]);
}