2017 3 15 餘數之和sum 失敗總結

2021-07-28 14:12:58 字數 838 閱讀 5365

數論題還是不會、

主要是實在搞不清楚乙個數和乙個連續遞增的模數有什麼關係、、

唯一能感覺到的是倍數差,但效率不如直接求,感覺這種題一般都和質數有關了

好吧、和質數無關    竟然這麼簡單、

還真是倍數差,但是是倍數差內部的規律,即除與模的規律、

我們可以利用餘數和除法的關係以及 除法的單調性 轉化:

答案=n*k-   ∑(i=1;i<=n )(     i * (下取整(k/i))      )

例:  k/i=m    得到商為m的序列的起點為1(因為i從小到大)

商為m的終點?     v=k/m  用k/m,因為除法下取整的平均特點(讓每份最大,且允許有不大於乙份數的空),它算出來的一定是   在k裡面分m份中最大的單份,如果要分比這個單份更大的單份,肯定分不了m份、、(即滿足 最多能裝下m個這個數的最大的這個數、、,即從i到v都是能被分成m份的單份)

其實這種「誤差」的主要因素是商不等於被除數除以除數(因為沒有小數,直接去尾的結果),所以除法下取整也有特殊的意義的。

碼:

#include#includeusing namespace std;

long long v,u,m,daan,n,k,i,j;

long long calc(long long m,long long s,long long t)

int main()

cout難點:

1、%轉化為-和/;

2、優化的技巧:對重複運算部分敏感

餘數之和sum

餘數之和sum time limit 5000ms memory limit 165888kb 64bit io format lld llu submit status description 給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值,其...

bzoj 1257 餘數之和sum 數學

time limit 5 sec memory limit 162 mb submit 3081 solved 1425 submit status discuss 給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值,其中k mod i表示k除以i的...

bzoj 1257 餘數之和sum 數論

給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值,其中k mod i表示k除以i的餘數。sum n k i sum n k lfloor k i rfloor i n k sum n lfloor k i rfloor i lfloor k i r...