转载自 http://blog.csdn.net/synapse7/article/details/12873437

这道题我自己做的时候没有想到好的优化方法,提交的时候借鉴这篇文章的内容,转载如下:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

11526 - H(n)

Time limit: 5.000 seconds

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2521

What is the value this simple C++ function will return?

long long H(int n){

      long long res = 0;

     for( int i = 1; i <= n; i=i+1 ){

            res = (res + n/i);

      }

     return res;

}

 

Input
The first line of input is an integer T ( T <= 1000 ) that indicates the number of test cases. Each of the next T line will contain a single signed 32 bit integer n.

 

Output
For each test case, output will be a single line containing H(n).

Sample Input                      Output for Sample Input

2

5

10

 

10

27

怎么计算sum{ [n/i] }?(1<=i<=n)(n<=2147483647)

n太大,硬算肯定不行,我们先观察一个例子,看能否得出一些结论。

当n=20时,和式展开为

20+10+6+5+4+3+2+2+2+2+1+1+1+1+1+1+1+1+1+1

注意到后面相同的数太多,不妨化简下:

20+10+6+5+1*(20-10)+2*(10-6)+3*(6-5)+4*(5-4)

=(20+10+6+5)+(20+10+6+5)-4*4

=2(20+10+6+5)-4*4

也许,我们可以

这样,复杂度就从O(n)降为O(√n)了。

uva 11526 H(n) (数论)的更多相关文章

  1. UVa 11526 H(n)

    题意: long long H(int n){ long long res = 0; for( int i = 1; i <= n; i=i+1 ){ res = (res + n/i); } ...

  2. 【数论,找规律】Uva 11526 - H(n)

    原来做过的题再看还是没想出来,看来当时必然没有真正理解.这次回顾感觉理解更透彻了. 网上的题解差不多都是一个版本,而且感觉有点扯.根据n=20猜出来的? 好吧哪能根据一个就猜到那么变态的公式.其实这题 ...

  3. 【数论】UVa 11526 - H(n)

    What is the value this simple C++ function will return? long long H(int n) { ; ; i <= n; i=i+ ) { ...

  4. UVA 10627 - Infinite Race(数论)

    UVA 10627 - Infinite Race option=com_onlinejudge&Itemid=8&page=show_problem&category=516 ...

  5. UVA 11754 - Code Feat(数论)

    UVA 11754 - Code Feat 题目链接 题意:给定一个c个x, y1,y2,y3..yk形式,前s小的答案满足s % x在集合y1, y2, y3 ... yk中 思路:LRJ大白例题, ...

  6. UVA 718 - Skyscraper Floors(数论)

    UVA 718 - Skyscraper Floors 题目链接 题意:在一个f层高的楼上,有e个电梯,每一个电梯有x,y表示y + k * x层都能够到,如今要问从a层是否能到达b层(中间怎么换乘电 ...

  7. UVA 12009 - Avaricious Maryanna(数论)

    UVA 12009 - Avaricious Maryanna 题目链接 题意:给定一个n.求出n个数位组成的数字x,x^2的前面|x|位为x 思路:自己先暴力打了前几组数据,发现除了1中有0和1以外 ...

  8. UVA 10951 - Polynomial GCD(数论)

    UVA 10951 - Polynomial GCD 题目链接 题意:给定两个多项式,求多项式的gcd,要求首项次数为1,多项式中的运算都%n,而且n为素数. 思路:和gcd基本一样,仅仅只是传入的是 ...

  9. UVA 10555 - Dead Fraction(数论+无限循环小数)

    UVA 10555 - Dead Fraction 题目链接 题意:给定一个循环小数,不确定循环节,求出该小数用分数表示,而且分母最小的情况 思路:推个小公式 一个小数0.aaaaabbb... 表示 ...

随机推荐

  1. AES加密工具

    public class AES { /** * 加密 * * @param content * 需要加密的内容 * @param password * 加密密码 * @return */ publi ...

  2. mongodb导入全栈商城的goods和users数据

    > show dbsshow dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB> use dumalluse dumallswitched to db ...

  3. ThinkPHP创建应用

    新建一个文件 引入ThinkPHP文件

  4. Python学习手册之控制结构(二)

    在上一篇文章中,我们介绍了Python的一些控制结构,现在我们继续介绍剩下的 Python 控制结构.查看上一篇文章请点击:https://www.cnblogs.com/dustman/p/9972 ...

  5. ts包、表、子表、section的关系

    我们经常接触到创建 DEMUX,注册 Filter 过滤数据, 通过回调过滤出 section 数据,然后我们对 section 数据做具体的解析或者其他操作. 我们这里说的 section 就是段的 ...

  6. 9-C++远征之多态篇-学习笔记

    C++远征之多态篇 面向对象三大特征:封装,继承,多态 多态: 发出一条命令时,不同的对象接收到同样的命令做出的动作不同 多态篇会学习到的目录: 普通虚函数 & 虚析构函数 纯虚函数:抽象类 ...

  7. python入门——Anaconda安装

    初学Python,可以选择python原始的IDE,但原始的IDE在使用过程中需要自己安装各种包,个人觉得初学者不需要将时间花在这些上面,而是应该直接学习python程序,这些比较杂的事情可以在以后的 ...

  8. SpringMVC接收前端传值有哪些方式?

    有很多种,比如: 1.通过@RequestParam注解接收请求参数: 2.通过Bean封装,接收多个请求参数 3.通过@ModelAttribute绑定接收前端表单数据 4.通过@PathVaria ...

  9. 数据库 MySQL part2

    表记录的操作 增 1.插入一条记录 语法:insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......); ...

  10. Android StateListDrawable的坑

    有问题的代码: StateListDrawable background = new StateListDrawable(); CircleDrawable pressedDrawable = new ...