6-7 统计某类完全平方数

103 阅读1分钟

本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。

函数接口定义:

int IsTheNumber ( const int N );

其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。

pintia.cn/problem-set…

解答

// 若一个数能表示成某个整数的平方的形式
// 则称这个数为完全平方数
int IsTheNumber ( const int N )
{
    // 判断是否为完全平方数
    int i;
    int flag = 0;
    for (i = 1; i <= N; i++)
    {
        if (i * i == N)
        {
            flag = 1;
            break;
        }
    }

    if (!flag)    return 0;

    // 判断是否有两位数字相同
    // 存储数字0-9在N中的出现次数
    int num[10] = {0};
    
    int n = N;
    
    while (n)
    {
        // 从末位开始统计次数,并判断是否重复
        if (++num[n % 10] == 2)
            return 1;
        
        n /= 10;
    }

    return 0;
}