51nod 1225 餘數之和 數論

2021-09-08 18:08:03 字數 911 閱讀 7301

1225 餘數之和

f(n) = (n % 1) + (n % 2) + (n % 3) + ...... (n % n)。其中%表示mod,也就是餘數。

例如f(6) = 6 % 1 + 6 % 2 + 6 % 3 + 6 % 4 + 6 % 5 + 6 % 6 = 0 + 0 + 0 + 2 + 1 + 0 = 3。

給出n,計算f(n), 由於結果很大,輸出mod 1000000007的結果即可。

輸入1個數n(2 <= n <= 10^12)。

輸出f(n) mod 1000000007的結果

餘數 = n - n/i*i

很顯然n/i只會有n的因子個數那麼多

而且n/i在連續的一段區間內都是一樣的。

這個用乙個等差序列去維護i就好了

然後就可以在sqrtn的複雜度解決這道題了。

#includeusing namespace std;

const int mod = 1e9+7;

long long quickpow(long long m,long long n,long long k)//返回m^n%k

return b;

}long long mul(long long a,long long b)

int main()

long long r=n/i;

long long l=n/(i+1)+1;

long long num=mul(mul(mul((r+l),quickpow(2,mod-2,mod)),(r-l+1)),i);

//cout

ans=(ans+n-mul(n/(n/i),(n/i))+mod)%mod;

}cout<}

51Nod 1225 餘數之和

acm模版 對於數論只會打表找規律的我來說,我一上來就打了一張表,然後發掘其中的規律 沒法子,腦子跟不上,推不出來規律,只能找規律。通過這個表我們可以發現 從第100項到51項是等差數列0 49,base 1 從第50項到34項是等差數列0 32,base 2 從第33項到26項是等差數列1 22,...

51 Nod 1225 餘數之和

基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 f n n 1 n 2 n 3 n n 其中 表示mod,也就是餘數。例如f 6 6 1 6 2 6 3 6 4 6 5 6 6 0 0 0 2 1 0 3。給出n,計算f n 由於結果很大,輸出mod 100000...

51Nod1225餘數之和

題目鏈結 題意 f n n 1 n 2 n 3 n n 其中 表示mod,也就是餘數。例如f 6 6 1 6 2 6 3 6 4 6 5 6 6 0 0 0 2 1 0 3。給出n,計算f n 由於結果很大,輸出mod 1000000007的結果即可。輸入 輸入1個數n 2 n 10 12 輸出 輸...