G - 高調波次数(II)LightOJ - 1245

それを見つけるために定期的に話題になります。SQRT(n)は前列挙の数は、番号iが出現の数であるN /中/(I + 1)への回答の寄与(N /中/(I + 1))* I。

いくつかのsqrtの背後にあるためには、N / Iから直接得ることができ、一度だけ現れなければなりません。

(数学は本当に深い~~~~)

コード:

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
typedefの長い 長いLL。
ボイド(LL時間){解決
    LL nは、
    cinを >> N; 
    LL ANS = 0 
    LL C = SQRT(N)。
    私はちゃいます。
    以下のための式(I = 1 ; I <= C; I ++ ){ 
        ANS + = N / I。
        もし((N / I)>(N /(I +(LL)1 ))){ 
            ANS + =((N /中/(I +(LL)1))* i)は、
        } 
    } 
    私は -;
    もし(N / I == I)ans- = I。
    printf(" ケースは%d:%のLLD \ N " 、時間、ANS)。
} 
int型のmain(){ 
    LL T。
    cinを >> トン。
    以下のために(LL iは= 1 ; iが<= T; iは++ )を解決(I)。    
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/Accepting/p/12600020.html