题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1245

题意:仿照上面那题他想求这么个公式的数。但是递归太慢啦。让你找公式咯。

题解:显然直接longlong存不下。暴力肯定不行啦。这题真的写了很久,死都不懂怎么找的公式啊。然后在wjd的帮助下懂了这题。

我们先列举几个例子

有没有发现他们的共同点,就是除到一定程度,就会变成1。这个临界点是sqrt(n)。那在sqrt(n)前面我们要算的就是这个数对于1,2,3……sqrt(n)的因子个数。

这个因子个数设为x。

n = i * x;

这个时候如果直接求是会TLE的。所以会推出来一个公式。

x  =  (n / i  - n / (i+1) ) * i;

至于这个公式怎么出来的。网上有篇博客是画图推的。QWQ。

这个公式是求什么的呢?其实就是求 x为 1~sqrt(n) 的时候,会有几个这样的式子。

拿10举例,

x = 1 ,i  = 6,7,8,9,10。 5个

x = 2 ,i  =  4 , 5。 2个

x = 3 ,i  =  3。     1个

i在1~sqrt(n)之间当然就可以直接求个数啦。 大胆的n/i。

把所有的x加起来就是答案。因为n可能为平方数,sqrt(n)可能多算了一次所以要减去这一次。

这个真的很难懂啊。QAQ、要多看几遍才行。

 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstdio>
 4 #define ll long long
 5 using namespace std;
 6 int main(){
 7     int T;
 8     cin>>T;
 9     int t = 1;
10     while(T--){
11         int n;
12         cin>>n;
13         ll sum = 0;
14         int tot = sqrt(n);
15         for(int i = 1; i <= tot ;i++){
16             sum += n / i;
17         }    //枚举 sqrt(n) ~ n  x在1~sqrt(n)直接算
18         for(int i = 1; i <= tot ;i++ ){
19             sum += (n / i - n / (i+1)) * i;
20         }    //枚举1~sqrt(n);     x在后面就用公式
21         if( tot  == n / tot )
22             sum -= tot;
23         printf("Case %d: %lld\n",t,sum);
24         t++;
25     }
26     return 0;
27 }

View Code

转载于:https://www.cnblogs.com/Asumi/p/9011325.html

LightOJ 1245 - Harmonic Number (II)相关推荐

  1. LightOJ - 1245 Harmonic Number (II) 求同值区间的和

    题目大意:对下列代码进行优化 long long H( int n ) {     long long res = 0;     for( int i = 1; i <= n; i++ )   ...

  2. light oj -1245 - Harmonic Number (II)

    先举个例子,假如给你的数是100的话,将100/2=50;是不是就是100除100-51之间的数取整为1: 100/3=33;100除50到34之间的数为2,那么这样下去到sqrt(100);就可以求 ...

  3. LightOJ1245 Harmonic Number (II) —— 规律

    题目链接:https://vjudge.net/problem/LightOJ-1245 1245 - Harmonic Number (II)     PDF (English) Statistic ...

  4. Harmonic Number (II) LightOJ - 1245(找规律?大数f(n)=n/1+n/2+n/3+......+n/n)

    题意:让我们求f(n)=n/1+n/2+n/3+......+n/n:同时注意n/i取整: 思路:首先我们先看数据的范围,n (1 ≤ n < 2 31),数据范围太大,如果我们按 照题目中的代 ...

  5. Harmonic Number (II) LightOJ - 1245 (找规律?。。。)

    题意: 求前n项的n/i  的和 只取整数部分 暴力肯定超时...然后 ...现在的人真聪明...我真蠢 觉得还是别人的题意比较清晰 比如n=100的话,i=4时n/i等于25,i=5时n/i等于20 ...

  6. LightOJ 1234 Harmonic Number(调和级数+欧拉常数)

    题目链接:https://cn.vjudge.net/contest/318269#problem/F Sample Input 12 1 2 3 4 5 6 7 8 9 90000000 99999 ...

  7. Harmonic Number LightOJ - 1234(暴力分段打表 / 欧拉爷爷的O(1))

    Harmonic Number LightOJ - 1234 题意: 给你一个调和级数. f(n)=1+12+13+14+15+...+1nf(n)=1+\frac{1}{2}+\frac{1}{3} ...

  8. Harmonic Number(欧拉公式或技巧打表)LightOJ - 1234(求调和级数的和)

    题意:求f(n)=1/1+1/2+1/3+1/4-1/n (1 ≤ n ≤ 108).,精确到10-8 (原题在文末) 知识点:调和级数(即f(n))至今没有一个完全正确的公式,但欧拉给出过一个近似公 ...

  9. LightOJ1234 Harmonic Number

    1 /* 2 LightOJ1234 Harmonic Number 3 http://lightoj.com/login_main.php?url=volume_showproblem.php?pr ...

最新文章

  1. [UIView beginAnimations:context:]与[UIView animateWithDuration:animations:]值得注意的一个区别...
  2. [BZOJ 2555] SubString
  3. response.sendredirect传递中文参数_Philips磁共振操作之参数 Contrast(3)
  4. 哈里王子启动可持续旅行倡议 携程作为创始成员入选
  5. IOS-项目中常见文件介绍
  6. 『并发包入坑指北』之向大佬汇报任务
  7. js中获取时间new date()的用法和获取时间戳
  8. css动画钟表——transform之rotate
  9. css3实现动画的三种方式
  10. 老徐和阿珍的故事:强引用、软引用、弱引用、虚引用,傻傻分不清楚
  11. 宇宙被超级计算机控制,宇宙被超级计算机控制, 欧空局发现一无法解释痕迹, 根本没有...
  12. [django]从前端返回字符串,后端转换为字典,执行数据添加操作
  13. FAQ0115 AT32使用AC6编译器注意事项
  14. 51.cto我真的很难过
  15. (基础篇1-15)项目架构简介及环境搭建
  16. 基于Ocean Connect云平台的照明控制系统设计
  17. python 将pcm编码文件转化为wav音频文件
  18. GitHub计算机书籍资源库,值得收藏
  19. 通过调试 Nginx 源码来定位有趣 Nginx 转发合并斜杠和编码问题
  20. ArcGIS 栅格计算器con函数用法

热门文章

  1. IIS 设置默认首页静态页,无静态页,走路由
  2. VC98\mfc\lib' specified in 'LIB environment variable' 系统找不到指定路径
  3. 用vue手脚架生成的项目直接修改时.vue文件后,保存编译就报一大堆的错,这是咋回事呢?
  4. sqlite工作记录-1数据库数据写入-转
  5. ubuntu安装ssh无法连接解决日志(已解决,可连接)-转
  6. sip消息类型和消息代码详解-转
  7. Java-json系列(一):用GSON解析Json格式数据
  8. csharp:Compare two DataTables to rows in one but not the other
  9. aspose-cell 使用
  10. 22.4. IP Address