1. 程式人生 > >PAT-4-7 統計某類完全平方數 (20分)

PAT-4-7 統計某類完全平方數 (20分)

4-7 統計某類完全平方數   (20分)

本題要求實現一個函式,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等。

函式介面定義:

int IsTheNumber ( const int N );

其中N是使用者傳入的引數。如果N滿足條件,則該函式必須返回1,否則返回0。

裁判測試程式樣例:

#include <stdio.h>
#include <math.h>

int IsTheNumber ( const int N );

int main()
{
    int n1, n2, i, cnt;
				
    scanf("%d %d", &n1, &n2);
    cnt = 0;
    for ( i=n1; i<=n2; i++ ) {
        if ( IsTheNumber(i) )
            cnt++;
    }
    printf("cnt = %d\n", cnt);

    return 0;
}

/* 你的程式碼將被嵌在這裡 */

輸入樣例:

105 500

輸出樣例:

cnt = 6

int IsTheNumber ( const int N ){
	int n,m,temp;
	m=N;
	n = (int)sqrt(N);
	if(n*n==m){
		int num[10]= {0};//這裡應該定義num的長度為10,因為傳入的整數的每位數可能是0~~9,而不是傳入數的位數。 
		while(m>0){//遍歷N的每一位上的數字,在相應的陣列中自加 如果有一個數組元素等於2 說明至少有2個位上的數相同
			temp = m%10;
			for(int i=0 ;i<=9;i++){
				if(temp==i){
					num[i]++;
					if(num[i]==2){
						return 1;
					}
				}
		
			}
			m/=10;
		}
		return 0;
	}
	return 0;
}