2015年3月7日土曜日

Lesson 8: CountFactors (Count Factors)

Lesson 8: CountFactors
https://codility.com/programmers/lessons/8

簡単な問題ですね。factorはみんなペアーで現れるので1からsqrt(N)までを調べて、Nを割り切れる時にカウンタを2ずつ増やします。ただし、sqrt(N)とペアになるのはそれ自身ですから、もしsqrt(N)がfactorだった場合は、値を返すまえに1を引いておきます。
これで100%のスコアになりますね









int solution(int N) {
    
    int cnt = 0;
    
    int i;
    double sqrtN = sqrt(N);
    
    for (i = 1; i <= sqrtN; i++){
        if (N % i == 0){
            cnt += 2;
        }
    }
    
    //to avoid the sqrt(N) to counted twice.
    if (sqrtN == (int)sqrtN){
        cnt--;
    }
    
    return cnt;
}

0 件のコメント:

コメントを投稿