BISHI42 余数求和

📅 发布时间:2026/7/6 7:56:22 👁️ 浏览次数:
BISHI42 余数求和
求解思路由于对任意正整数k,ik, ik,i有kmod ik−i×⌊ki⌋k \mod i k - i \times \lfloor \frac{k}{i} \rfloorkmodik−i×⌊ik​⌋∑i1n(kmod i)∑i1n(k−i×⌊ki⌋)n×k−∑i1min⁡(n,k)(i×⌊ki⌋)\sum_{i1}^n (k \mod i) \sum_{i1}^n \left( k - i \times \lfloor \frac{k}{i} \rfloor \right) n \times k - \sum_{i1}^{\min(n,k)} \left( i \times \lfloor \frac{k}{i} \rfloor \right)i1∑n​(kmodi)i1∑n​(k−i×⌊ik​⌋)n×k−i1∑min(n,k)​(i×⌊ik​⌋)求解代码publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderbrnewBufferedReader(newInputStreamReader(System.in));PrintWriteroutnewPrintWriter(newOutputStreamWriter(System.out));String[]strbr.readLine().split(\\s);longnLong.parseLong(str[0]);longkLong.parseLong(str[1]);longtotaln*k;// 原表达式的第一部分longmMath.min(n,k);// 只需要计算到min(n,k)longi1;while(im){longvk/i;longjMath.min(k/v,m);// 当前块的右边界// 计算i到j的和(ij)*(j-i1)/2再乘以vtotal-v*(ij)*(j-i1)/2;ij1;// 跳到下一个块}out.println(total);out.flush();out.close();br.close();}