LightOJ 1245 - Harmonic Number (II)
题目链接: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)相关推荐
- LightOJ - 1245 Harmonic Number (II) 求同值区间的和
题目大意:对下列代码进行优化 long long H( int n ) { long long res = 0; for( int i = 1; i <= n; i++ ) ...
- light oj -1245 - Harmonic Number (II)
先举个例子,假如给你的数是100的话,将100/2=50;是不是就是100除100-51之间的数取整为1: 100/3=33;100除50到34之间的数为2,那么这样下去到sqrt(100);就可以求 ...
- LightOJ1245 Harmonic Number (II) —— 规律
题目链接:https://vjudge.net/problem/LightOJ-1245 1245 - Harmonic Number (II) PDF (English) Statistic ...
- 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),数据范围太大,如果我们按 照题目中的代 ...
- Harmonic Number (II) LightOJ - 1245 (找规律?。。。)
题意: 求前n项的n/i 的和 只取整数部分 暴力肯定超时...然后 ...现在的人真聪明...我真蠢 觉得还是别人的题意比较清晰 比如n=100的话,i=4时n/i等于25,i=5时n/i等于20 ...
- 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 ...
- 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} ...
- Harmonic Number(欧拉公式或技巧打表)LightOJ - 1234(求调和级数的和)
题意:求f(n)=1/1+1/2+1/3+1/4-1/n (1 ≤ n ≤ 108).,精确到10-8 (原题在文末) 知识点:调和级数(即f(n))至今没有一个完全正确的公式,但欧拉给出过一个近似公 ...
- LightOJ1234 Harmonic Number
1 /* 2 LightOJ1234 Harmonic Number 3 http://lightoj.com/login_main.php?url=volume_showproblem.php?pr ...
最新文章
- [UIView beginAnimations:context:]与[UIView animateWithDuration:animations:]值得注意的一个区别...
- [BZOJ 2555] SubString
- response.sendredirect传递中文参数_Philips磁共振操作之参数 Contrast(3)
- 哈里王子启动可持续旅行倡议 携程作为创始成员入选
- IOS-项目中常见文件介绍
- 『并发包入坑指北』之向大佬汇报任务
- js中获取时间new date()的用法和获取时间戳
- css动画钟表——transform之rotate
- css3实现动画的三种方式
- 老徐和阿珍的故事:强引用、软引用、弱引用、虚引用,傻傻分不清楚
- 宇宙被超级计算机控制,宇宙被超级计算机控制, 欧空局发现一无法解释痕迹, 根本没有...
- [django]从前端返回字符串,后端转换为字典,执行数据添加操作
- FAQ0115 AT32使用AC6编译器注意事项
- 51.cto我真的很难过
- (基础篇1-15)项目架构简介及环境搭建
- 基于Ocean Connect云平台的照明控制系统设计
- python 将pcm编码文件转化为wav音频文件
- GitHub计算机书籍资源库,值得收藏
- 通过调试 Nginx 源码来定位有趣 Nginx 转发合并斜杠和编码问题
- ArcGIS 栅格计算器con函数用法
热门文章
- IIS 设置默认首页静态页,无静态页,走路由
- VC98\mfc\lib' specified in 'LIB environment variable' 系统找不到指定路径
- 用vue手脚架生成的项目直接修改时.vue文件后,保存编译就报一大堆的错,这是咋回事呢?
- sqlite工作记录-1数据库数据写入-转
- ubuntu安装ssh无法连接解决日志(已解决,可连接)-转
- sip消息类型和消息代码详解-转
- Java-json系列(一):用GSON解析Json格式数据
- csharp:Compare two DataTables to rows in one but not the other
- aspose-cell 使用
- 22.4. IP Address