/*实现一个函数,判断任一给定整数N
是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等*/
步骤一:怎样找到完全平方数
步骤二:判断是否有两个数相同(双层判断)
对于此题,我浪费的时间在怎样判断一个数是完全平方数,一开始用循环去判断,导致程序运行时间太长,放回不出结果。
解决思路:sqrt()函数原本返回的是double类型,现在我只取整数部分,如果r的平方还能与N相等,说明r本身就是整数,即N为完全平方数。
将N中的每一位提取出来,放在num数组数组中。最后双重循环判断是否有相同的数。
int IsTheNumber( const int N)
{ int r= sqrt(N); int temp = N; int num[20]; int tag=0; int i=0; int j; int length; if(r*r == N) { do {num[i]=temp % 10;
temp = temp /10; i++ ; }while(temp !=0); length =i; for(i =0 ; i <length-1 ;i++) { for(j=i+1; j<=length-1 ; j++) { if(num[i] == num[j]) { tag=1; break; } } }}
return tag;
}