ZOJ3175【公式化函数的思想】
题意:
F(n)为m从1至n的f(n,m)的和。
给出n,求F(n)。
思路:
就是计算n/1 + n/2 + n/3 + ... +n/n - n的值;
然后算那个分式的和的话不能O(N),发现n不变,就随手画了个n/x的函数,如下图是y=10/x的函数图;
我们发现这个函数图像是和y=x对称的,这个是其次,然后顺着这个感觉,可以发现,我们从1枚举到sqrt(n),在1的时候10/1=10,在2的时候10/2=5,我们可以很显然的得知,在对应y的区间 (5,10] 对于10/x来说的答案都是1,然后在3的时候10/3=3,我们又能发现y的范围在区间(3,5]上的答案都是2。对于n=10这个情况,在枚举 [1 , sqrt(n)] 每次加上n/i,并且加上对应之前 ( n/(i-1) , n/i ] 的答案都是i-1 ,这样我们对于10这样正好处理了1到n所有的数。
但是如果是20的话,sqrt(20)=4,这样简单加到了4,我们发现我们对于区间的处理都是前闭后开,所以在i=4时,没有处理n/i=5的情况,所以最后还要把 (sqrt(n) , n/sqrt(n)] 这个区间里的答案都加上;然而爆long long wa了一发;
#include<bits/stdc++.h>
using namespace std; typedef long long LL; int main()
{
int T;
scanf("%d",&T);
while(T--)
{
LL n;
scanf("%lld",&n);
LL sum=0;
LL q=sqrt(n);
sum=n;
for(LL i=2;i<=q;i++)
{
sum=sum+n/i;
sum=sum+(i-1)*(n/(i-1)-n/i);
}
if(n/q>q)
{
sum=sum+q*(n/q-n/(q+1));
}
printf("%lld\n",sum-n);
}
return 0;
}
ZOJ3175【公式化函数的思想】的更多相关文章
- 牛客网暑期ACM多校训练营(第三场)G:Coloring Tree(函数的思想)
之前两次遇到过函数的思想的题,所以这次很敏感就看出来了.可以参考之前的题: https://www.cnblogs.com/hua-dong/p/9291507.html Christmas is c ...
- CodeForces - 1005E2:Median on Segments (General Case Edition) (函数的思想)
You are given an integer sequence a1,a2,…,ana1,a2,…,an. Find the number of pairs of indices (l,r)(l, ...
- jquery中ajax中post方法(多学习:洞悉原理,触类旁通)(函数封装思想)
jquery中ajax中post方法(多学习:洞悉原理,触类旁通)(函数封装思想) 一.总结 1.多看学习视频:洞悉原理,触类旁通, 2.函数封装:$.post(URL,data,callback); ...
- javascript之高级函数应用思想
1.级联函数:应用对象方法调用的连写 function A(){ this.a = ''; this.b = ''; this.c = ''; } //改造一下 A.prototype = { A.p ...
- C语言的抽象与函数指针--思想(转)
一.何为抽象? 从小到大,我们接触到的抽象,最熟悉的莫过于数学了.为什么这样说呢? 比如说,在小学的时候,老师总是拿了几个苹果来引诱我们:同学们,这里有几个苹果啊?于是我们流着口水一个个地数,一个苹果 ...
- Python学习第十八篇——低耦合函数设计思想
import json 2 def greet_user(filename): 3 try: 4 with open(filename) as f_obj: 5 username = json.loa ...
- JavaScript 函数创建思想
//定义一个函数的步骤//1.开辟一个新的空间地址//2.把函数体里面的代码当做字符串存储到空间里面(一个函数如果只定义了,没有执行的话,这个函数没有任何意义)//3.在把我们的地址给我们的函数名fu ...
- Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列
什么是递归?简单的说就是:函数自身调用自身. “普通程序员用迭代,天才程序员用递归” 虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢, 但在一些算法上面仍然是递归 ...
- 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数
函数式编程其实就是按照数学上的函数运算思想来实现计算机上的运算.虽然我们不需要深入了解数学函数的知识,但应该清楚函数式编程的基础是来自于数学. 例如数学函数\(f(x) = x^2+x\),并没有指定 ...
随机推荐
- 如何使Htm页面使用IE9文档模式
修改Htm页面的方法之一是,在Head->Title下添加<META http-equiv="X-UA-Compatible" content="IE=9&q ...
- javaweb开发之javaBean
一.JavaBean简介 JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁.JSP搭配JavaBean来使用 ...
- 九度OJ 1091:棋盘游戏 (DP、BFS、DFS、剪枝)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1497 解决:406 题目描述: 有一个6*6的棋盘,每个棋盘上都有一个数值,现在又一个起始位置和终止位置,请找出一个从起始位置到终止位置代 ...
- C++笔记之用户定义的转换
用户定义的转换(User-defined Conversion) 是一种将一个类类型转换为另一种类型的机制 语法 operator conversion-type-idexplicit operato ...
- STM32 ~ ili9341 横屏驱动代码
void ili9341_Initializtion(void) { u16 i; RCC->APB2ENR|=<<; //使能PORTB时钟 GPIOB->CRH&= ...
- Codeforces Round #401 (Div. 2) C Alyona and Spreadsheet —— 打表
题目链接:http://codeforces.com/contest/777/problem/C C. Alyona and Spreadsheet time limit per test 1 sec ...
- 第二篇:python基础之核心风格
阅读目录 一.语句和语法 二.变量定义与赋值 三.内存管理 内存管理: 引用计数: 简单例子 四.python对象 五.标识符 六.专用下划线标识符 七.编写模块基本风格 八.示范 一.语句和语法 # ...
- SQL Server中数据类型对应C#中数据类型
在SQL Server 2008中新建数据表的时候有33种数据类型可选,下面分别列举了这些类型对应的C#数据类型 //----------------------------------------- ...
- linux下syslog使用说明
转自:http://blog.chinaunix.net/uid-25120309-id-3359929.html syslog 系统日志应用 1) 概述 syslog是Linux系统默 ...
- 组合优化学习笔记<之>从贪心算法到子集系统再到拟阵
贪心算法是用的比较多的一种优化算法,因为它过程简洁优美,而且结果有效.有些优化问题如最大权森林(MWF)是可以用贪心问题求解的,由于最小支撑树(MST)问题与MWF是等价的,所以MST也是可以用贪心算 ...