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 件のコメント:
コメントを投稿