1. 程式人生 > 實用技巧 >(整數分塊變形)牛客程式設計巔峰賽S2第1場 - 鑽石&王者 C-牛牛算題

(整數分塊變形)牛客程式設計巔峰賽S2第1場 - 鑽石&王者 C-牛牛算題

題目連結:https://ac.nowcoder.com/acm/contest/9005/C

整數分塊

列舉p(也就是每一個分塊的七點,l),num/(num/l)(也就是每一個分塊裡面的終點,r)

比如num=20的時候

1*20+0
2*10+0
3*6+2
4*5+0
5*4+0
6*3+2
7*2+6            //r=7
8*2+4            //
9*2+2            //
10*2+0           //r=20/(20/7) = 10

11*1+9 //l=11 12*1+8 ... 18*1+2 19*1+2 20*1+0 //r = 20/(20/11) = 20

class
Solution { public: /** * 程式碼中的類名、方法名、引數名已經指定,請勿修改,直接返回方法規定的值即可 * 返回1-n的所有k*m的和 * @param num long長整型 正整數 n * @return long長整型 */ long long cowModCount(long long num) { // write code here long long ans = 0, mod = 1e9+7; for(long long l = 1, r;l <= num;l=r+1
) { r = num/(num/l); ans = (ans + (r-l+1)*(num/l)*num%mod - (r-l+1)*(l+r)/2*(num/l)%mod*(num/l)%mod+mod)%mod; } return ans; } };