本题要求实现一个函数,统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。
函数接口定义:
int search( int n );
其中传入的参数int n是一个三位数的正整数(最高位数字非0)。函数search返回[101, n]区间内所有满足条件的数的个数。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>
int search( int n );
int main()
{
int number;
scanf("%d",&number);
printf("count=%d\n",search(number));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
500
输出样例:
count=6
这道题困扰我最多的是提取每一个数的时候,运算符弄错导致我重复输出已经输出的数,
提取百位数—x/100,
提取十位数—x/10%10,
提取个位数—x%10
int search( int n ){
int i,count=0,sum;
for(i=11 ;i*i<=n;i++){
sum=i*i;
if(sum%10==sum/100) //判断个位数和百位数是否相等
count++;
if(sum/100==sum/10%10)//判断百位数与十位数是否相等
count++;
if(sum%10==sum/10%10) //判断个位数和十位数是否相等
count++;
}
return count;
}
该博客介绍了如何用C语言编写一个函数,统计[101, n]区间内三位数中拥有两位相同数字的完全平方数个数。博主分享了函数接口定义和解决此类问题时遇到的难点,特别是正确提取数字的技巧,如百位、十位和个位的获取方法。"
122803064,7327838,算法导论:合并区间问题解析,"['算法', '数据结构']
4329

被折叠的 条评论
为什么被折叠?



