Harmonic Number (II) LightOJ - 1245 (找规律?。。。)
题意:
求前n项的n/i 的和 只取整数部分
暴力肯定超时。。。然后 。。。现在的人真聪明。。。我真蠢
觉得还是别人的题意比较清晰
比如n=100的话,i=4时n/i等于25,i=5时n/i等于20,于是在大于20到小于等于25内的5个数字j都有n/j等于4,然后ans+=4*5
所以我们可以在小于等于根号n的范围内枚举i,ans+=n/i,然后ans+=(n/(i)-n/(i+1))*i,这样分段加起来
但是又重复的部分。。
即 令m = sqrt(n), 如果n / m == m 则n / (m+1) == m-1 所以在循环进行到最后一项 即m时 n/i - n/(i+1)等于 1 所以在执行 res += (n/i - n/(i+1))*i时(即 res += 1*m 时)多加了一个m
所以要最后判断一下 减去
例如 1、2、3、4、5、6、7、8、9、10
sqrt(10)= 3
所以 最后应该是1个10 1个5 1个3 2个2 5个1
但在循环执行到i=3 时 多加了一个3
若还不懂 具体看看代码 自己写一下
#include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <set> #include <vector> #include <stack> #include <queue> #include <algorithm> #include <cmath> #define MOD 2018 #define LL long long #define ULL unsigned long long #define maxn 100009 #define Pair pair<int, int> #define mem(a, b) memset(a, b, sizeof(a)) #define _ ios_base::sync_with_stdio(0),cin.tie(0) //freopen("1.txt", "r", stdin); using namespace std; const int LL_INF = 0x7fffffffffffffff,INF = 0x3f3f3f3f;int main() {int T;cin>> T;int cnt = 0;while(T--){LL n, res = 0;cin>> n;LL m = sqrt(n);for(LL i=1; i<=m; i++){res += n/(double)i;res += (n/i - n/(i+1)) * i;}if(n/m == m)res -= m;printf("Case %d: %lld\n",++cnt,res);}return 0; }
转载于:https://www.cnblogs.com/WTSRUVF/p/9184774.html
Harmonic Number (II) LightOJ - 1245 (找规律?。。。)相关推荐
- 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),数据范围太大,如果我们按 照题目中的代 ...
- LightOJ1245 Harmonic Number (II) —— 规律
题目链接:https://vjudge.net/problem/LightOJ-1245 1245 - Harmonic Number (II) PDF (English) Statistic ...
- LightOJ 1245 - Harmonic Number (II)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1245 题意:仿照上面那题他想求这么个公式的数.但是递归太慢啦.让你找公式咯. ...
- 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);就可以求 ...
- 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))至今没有一个完全正确的公式,但欧拉给出过一个近似公 ...
- LeetCode 667. 优美的排列 II(找规律)
1. 题目 给定两个整数 n 和 k,你需要实现一个数组,这个数组包含从 1 到 n 的 n 个不同整数,同时满足以下条件: ① 如果这个数组是 [a1, a2, a3, ... , an] ,那么数 ...
- hdu 4279 Number (找规律)
http://acm.hdu.edu.cn/showproblem.php?pid=4279 题意: 给出a,b两个数,1<=a<=b 如果a,b不互质,且a%b != 0则说明a是b的特 ...
最新文章
- JVM:垃圾回收概述
- python基础之Day23
- Redis 缓存数据库
- Windows 10全新界面要来了:焕然一新!
- kerberos 下运行spark 报错 Requested user hdfs is banned
- 夯实数字化转型算能基石 构建洛阳银行核心云
- chrome导出插件
- 裁剪平面ClipPlane
- Windows域策略设置 禁止客户端修改IP地址【全域策略生效】
- 80X86 汇编指令符号大全
- spring cloud构建java版 b2b2c o2o电子商务云商平台
- 基于php考试系统设计与实现研究文毕业设计(论文)学生中期检查,毕业设计(论文)中期检查报告(学生填写)...
- Modelica学习笔记1
- 作业6 陪集 拉格朗日定理
- 惊悚游戏《寂静岭》厕所3D场景模型制作分享
- 「镁客·请讲」移康智能朱鹏程:做产品就要直击痛点,多余的功能只会是噱头...
- 如何正确理解开漏输出和推挽输出
- 禁止macOS 在Safari下载的ZIP文件自动解压
- @ControllerAdvice 用法
- ACdream原创群赛(11)の风神日华神专场 G - 风之国