UVA-11526H(n)对称性+几何意义+
作者:互联网
H(n)
思路:
所要求的H(n)的几何意义,就是y=n/x在区间[1,n]中的整数点,
由于整数点的分布具有对称性,考虑[1,√n]的整数点即可。
#include<stdio.h>
#include<iostream>
#include<cmath>
#include<math.h>
#include<string>
#include<string.h>
#include<algorithm>
#define ll long long
using namespace std;
int main(){
int t;
cin>>t;
while (t--)
{
int n;
scanf("%d",&n);
ll res = 0;
int m = sqrt(n);
for(int i=1;i<=m;i++)
{
res += n/i;
}
res=res*2 -m*m;
printf("%lld\n",res);
}
return 0;
}
下面是TLE代码,仅仅是遍历循环的时候把条件改成了for(int i=1;i*i<=n;i++)
就TLE。(难道计算机做一个乘法就这么慢吗?)
#include<stdio.h>
#include<iostream>
#include<cmath>
#include<math.h>
#include<string>
#include<string.h>
#include<algorithm>
#define ll long long
using namespace std;
int main(){
int t;
cin>>t;
while (t--)
{
int n;
scanf("%d",&n);
ll res = 0;
for(int i=1;i*i<=n;i++)
{
res += n/i;
}
int m = sqrt(n);
res=res*2 -m*m;
printf("%lld\n",res);
}
return 0;
}
好喜欢萨摩猪
发布了52 篇原创文章 · 获赞 0 · 访问量 938
私信
关注
标签:int,res,ll,11526H,namespace,long,对称性,UVA,include 来源: https://blog.csdn.net/qq_44846324/article/details/104590915