水题

发布时间: 2017年6月25日 14:06   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M

描述

平均因数个数的统计对于估算数论题目复杂度具有非常重要的意义。小A同学听了今天的课后,于是想要自己写一个程序,求出1到n的平均因数个数。小A当然会啦!但是他想考考你。

输入

多组输入数据(不超过1000组)。
每组一个正整数n(n≤109),如题目所述。

输出

输出1到n中的平均因数个数,精确到9位小数。

样例输入1

4
20170703

样例输出1

2.000000000
16.974173533

平均因数的个数计数,很简单嘛

1~n的因数的个数总数为

而由公式我们可以将上面的式子变换成为

也就是

对这个东西进行求和也是比较简单的,注意不能暴力求和,因为时间复杂度太高了

我们考虑一个例子,当n为8的时候

[8/1]+[8/2]+[8/3]+[8/4]+[8/5]+[8/6]+[8/7]+[8/8]

=8+4+2+2+1+1+1+1

我们可以发现光1就出现了4次,2出现了2次,剩下的都出现了1次。这也就意味着,我们可以进行统计

我们统计除数为d的出现次数,那么d出现的次数可以表示为k = [n/d]-[n/(d+1)]

那么,它对答案的贡献就是d*k,下一次d就变成了d+1

当我们第一次发现d出现1次的时候,这代表着下面所有的d也都只会出现一次了,我们求出这时候的分母f

将f循环到1,并直接暴力算出结果。

代码:

#include <cstdio>
#include <map>
#include <iostream>
using namespace std;
typedef long long LL;
int main(){LL n;while(scanf("%lld",&n) != -1){LL res = 0;LL d = 1;while(d <= n){//++cnt;LL nex = d+1;LL k = n/d - n/nex; if(k == 1){for(int i = n/d;i >= 1;i--){res += n / i;}break;}res += d*k;d = nex;}printf("%.9lf\n",double(res)/n);}return 0;
}

2017西安交大ACM小学期数论 [水题]相关推荐

  1. 2017西安交大ACM小学期数论 [更新学号]

    发布时间: 2017年6月24日 20:27   最后更新: 2017年7月3日 09:27   时间限制: 3000ms   内存限制: 128M 描述 某知名高校有n个学生,每个学生有一个唯一ID ...

  2. 2017西安交大ACM小学期数论 [等差数列]

    等差数列 发布时间: 2017年6月25日 13:42   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 给定正整数n,试问存在多少个和为n ...

  3. 2017西安交大ACM小学期数论 [完全平方数]

    完全平方数 发布时间: 2017年6月24日 17:01   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 给定正整数b,求最大的整数a,使 ...

  4. 2017西安交大ACM小学期数论 [阅兵式]

    阅兵式 发布时间: 2017年6月25日 12:53   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 阅兵式上,将士们排成一个整齐的方阵, ...

  5. 2017西安交大ACM小学期 敏感词汇[AC自动机]

    敏感词汇 发布时间: 2017年7月5日 00:23   最后更新: 2017年7月6日 14:40   时间限制: 1500ms   内存限制: 128M 描述 我们知道,在进行聊天时,有些词汇是敏 ...

  6. 2017西安交大ACM小学期 文本查找[AC自动机]

    文本查找 发布时间: 2017年7月5日 00:10   最后更新: 2017年7月5日 13:47   时间限制: 1500ms   内存限制: 128M 描述 给定m种两两不同的关键词,并给定一段 ...

  7. 2017西安交大ACM小学期 选择困难症[折半枚举+二分查找]

    选择困难症 发布时间: 2017年7月4日 12:44   最后更新: 2017年7月4日 12:45   时间限制: 5000ms   内存限制: 128M 描述 GG有严重的选择困难症. 早上起床 ...

  8. 2017西安交大ACM小学期 刷墙[折半枚举+异或]

    刷墙 发布时间: 2017年7月3日 12:17   最后更新: 2017年7月6日 22:29   时间限制: 3000ms   内存限制: 128M 描述 小明有一面黑白混搭的墙,他想给把墙重新粉 ...

  9. 2017西安交大ACM小学期数据结构 [又是树状数组、异或]

    Problem F 发布时间: 2017年6月28日 10:31   最后更新: 2017年6月29日 21:35   时间限制: 2000ms   内存限制: 64M 描述 给定一个n×m的矩形, ...

最新文章

  1. 1030 完美数列(two pointers解法)
  2. 树状数组 求 逆序对
  3. linux mysql UNSIGNED,关于mysql:MySqlint10-与-int-unsigned-之前的区别
  4. [蓝桥杯2018决赛]三角形面积-数论
  5. 01.MyBatis入门
  6. java编译源文件_Java实现编译源文件(Java源码)
  7. ppt流程图字体太小_简单三步,用WPS轻松完成一个又大气又好看的流程图!
  8. kubernetes之五:资源管理
  9. LeetCode(118)——杨辉三角(JavaScript)
  10. 异常的继承关系与捕获关系(只有直系的继承关系时,下面的类才能被捕获,和辈分无关!!)
  11. c#连接mysql数据库,增删查改命令执行
  12. (十三)洞悉linux下的Netfilteriptables:为防火墙增添功能模块【实战】
  13. YOLOX系列一 -- 代码下载以及win10上demo运行
  14. WS2 安装ubuntu +迁移+vscode
  15. 基于QT实现的数独游戏DPLL的SAT求解器设计
  16. 计算机考研408每日一题 day160
  17. 梦想CAD软件(控件)图层介绍
  18. 如何用Hexo搭建个人博客网站
  19. magicbook屏幕_荣誉Magicbook 15降压笔记本电脑的最佳爆炸现在
  20. Homekit智能开关/定时控制

热门文章

  1. unity中单位是米还是厘米_【一步数学】小学数学单位换算公式大全及专项训练...
  2. arma3自定义服务器,Arma3 生存服架设教程,武装突袭3游戏服务器架设
  3. 计算机所有数据的表示方式都是用,计算机数据表示
  4. [mybatis]逆向工程MGB基本编写
  5. [C++STL]C++实现stack容器适配器
  6. C++拷贝构造函数调用时机分析
  7. UVA - 839 Not so Mobile
  8. 计算机组成原理期末复习往年卷子
  9. srs10流程图_高效的SRS资源指示方法与流程
  10. sql 对groupby 后的数据limit_SQL(三)——汇总分析