找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14972|回复: 0

[原创代码] python求余数和

[复制链接]
发表于 2016-4-27 12:45:14 | 显示全部楼层 |阅读模式
  某道ACM题,N为一万亿,%号表示取余数:计算N%1+N%2+N%3+...+N%N =?
  实际上就是求  N除以1  一直到  N除以N  的余数的和,只是N数字太大了,常规for循环一万亿次需要几十小时时间,显然是算法题,原理过于简单,不解释了,直接上代码。
  1. # Python求N%1到N%N的和
  2. N=10**12;S=0;M=int(N**0.5)
  3. for i in range(1,M+1):n=N//i-N//(i+1);a=N%(N//(i+1)+1);S+=n*a-n*(n-1)*i/2
  4. for i in range(1,M+1):S+=N%i
  5. print(int(S))
复制代码
  C语言更快只需0.01秒
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:29 , Processed in 0.015904 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表