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、要多看几遍才行。
- #include<iostream>
- #include<cmath>
- #include<cstdio>
- #define ll long long
- using namespace std;
- int main(){
- int T;
- cin>>T;
- int t = ;
- while(T--){
- int n;
- cin>>n;
- ll sum = ;
- int tot = sqrt(n);
- for(int i = ; i <= tot ;i++){
- sum += n / i;
- } //枚举 sqrt(n) ~ n x在1~sqrt(n)直接算
- for(int i = ; i <= tot ;i++ ){
- sum += (n / i - n / (i+)) * i;
- } //枚举1~sqrt(n); x在后面就用公式
- if( tot == n / tot )
- sum -= tot;
- printf("Case %d: %lld\n",t,sum);
- t++;
- }
- return ;
- }
LightOJ 1245 - Harmonic Number (II)的更多相关文章
- LightOJ 1245 Harmonic Number (II)(找规律)
http://lightoj.com/volume_showproblem.php?problem=1245 G - Harmonic Number (II) Time Limit:3000MS ...
- LightOJ - 1245 - Harmonic Number (II)(数学)
链接: https://vjudge.net/problem/LightOJ-1245 题意: I was trying to solve problem '1234 - Harmonic Numbe ...
- LightOj 1245 --- Harmonic Number (II)找规律
题目链接:http://lightoj.com/volume_showproblem.php?problem=1245 题意就是求 n/i (1<=i<=n) 的取整的和这就是到找规律的题 ...
- lightoj 1245 Harmonic Number (II)(简单数论)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1245 题意:求f(n)=n/1+n/2.....n/n,其中n/i保留整数 显 ...
- LightOJ 1245 Harmonic Number (II) 水题
分析:一段区间的整数除法得到的结果肯定是相等的,然后找就行了,每次是循环一段区间,暴力 #include <cstdio> #include <iostream> #inclu ...
- LightOJ - 1245 Harmonic Number (II) 求同值区间的和
题目大意:对下列代码进行优化 long long H( int n ) { long long res = 0; for( int i = 1; i <= n; i++ ) ...
- LightOJ - 1234 LightOJ - 1245 Harmonic Number(欧拉系数+调和级数)
Harmonic Number In mathematics, the nth harmonic number is the sum of the reciprocals of the first n ...
- 1245 - Harmonic Number (II)(规律题)
1245 - Harmonic Number (II) PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 3 ...
- 1245 - Harmonic Number (II)---LightOJ1245
http://lightoj.com/volume_showproblem.php?problem=1245 题目大意:一个数n除以1到n之和 分析:暴力肯定不行,我们可以先求1~sqrt(n)之间的 ...
随机推荐
- js分割url提取参数
//分割url提取参数 var url = Window.location.search;//获取url地址?至结尾的所有参数 //key(需要检错的键) url(传入的需要分割的url地址) fun ...
- python 多设备同时安装app包
python 多设备同时安装app包 上代码 #!/usr/bin/env python # -*- encoding: utf-8 -*- import os import time from m ...
- python库argparse中type的新奇指定方法
最近在看一些项目的源码,总是能学到好多东西. 关于arparse中type的类型指定 不止可以指定常规类型,还可以加一些自己类型判断,具体用法如下(来源): def str2bool(v): &quo ...
- DO_DEVICE_INITIALIZING
这个东西的位置在DEVICE_OBJECT的Flags字段中, 本来这个Flags大多的情况下都是在设置IO方式,如DO_BUFFERED_IO, 但特殊的位也可能需要在这里设置. 用处是防止当自己的 ...
- JVM调优参数设置?
-Xms20M 表示设置堆容量的最小值为20M,必须以M为单位 -Xmx20M 表示设置堆容量的最大值为20M,必须以M为单位.将-Xmx和-Xms设置为一样可以避免堆自动扩展.大的项目-Xmx和-X ...
- C语言结构体嵌套
#include <stdio.h> int main() { /*************************************************** *结构体嵌套:结构 ...
- debug breakpoint with maven in eclipse
- Vue之数据排序加签
这篇随笔小编给大家带来的是数据排序加签: 所谓数据加签,就是把数据进行加密再传给后端,这样保证数据的秘密性.不容易被修改和获取:排序就是根据公司要求对字段进行排序,有些公司会把字段根据a-z排序,有些 ...
- Mysql优化-分区
分区简介 分区是根据一定的规则,数据库把一个表分解成多个更小的.更容易管理的部分.就访问数据库应用而言,逻辑上就只有一个表或者一个索引,但实际上这个表可能有N个物理分区对象组成,每个分区都是一个独立的 ...
- python基础小点
变量的命名规则 由字母.下划线.数字组成,且不能以数字开头 不能用关键字作为变量名 最好不要与python内置的一些方法和类名冲突 变量名应尽量简短且具有意义,多个单词之间用下划线连接 注释 # - ...