數論題還是不會、
主要是實在搞不清楚乙個數和乙個連續遞增的模數有什麼關係、、
唯一能感覺到的是倍數差,但效率不如直接求,感覺這種題一般都和質數有關了
好吧、和質數無關 竟然這麼簡單、
還真是倍數差,但是是倍數差內部的規律,即除與模的規律、
我們可以利用餘數和除法的關係以及 除法的單調性 轉化:
答案=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...