LightOJ1007 Mathematically Hard
来源:互联网 发布:中国人民大学新闻 知乎 编辑:程序博客网 时间:2024/04/29 19:08
LightOJ1007
题目的意思很容易理解,求一个区间[a,b]内的欧拉函数平方之和
但是题目的数据限很大 a,b都是1e12级。按照一般思路写好程序后,实验以下从2到10000发现long long也会超范围,所以用unsigned long long。
此外还需要预处理前缀和,不然就会超时。
预处理前缀和时不能够再开数组,不然就会爆内存,WA点多多.
AC代码:
#include <bits/stdc++.h>typedef unsigned long long ull;const int maxn=5000000+10;using namespace std;ull euler[maxn],a,b;void geteuler_table(){ //欧拉函数打表 memset(euler,0,sizeof(euler)); euler[1]=0; for(int i=2;i<=maxn;i++){ if(euler[i]==0) for(int j=i;j<=maxn;j+=i){ if(euler[j]==0) euler[j]=j; euler[j]=euler[j]/i*(i-1); } } //cout<<euler[2]<<endl; for(int i=2;i<=maxn;i++) //预处理前缀和 euler[i]=euler[i-1]+euler[i]*euler[i];}int main(){ //freopen("input.txt","r",stdin); int T,cnt=0; scanf("%d",&T); geteuler_table(); while(T--){ ull ans; scanf("%lld%lld",&a,&b); printf("Case %d: ",++cnt); ans=euler[b]-euler[a-1]; printf("%llu\n",ans); }}
0 0
- LightOJ1007 - Mathematically Hard
- LightOJ1007 Mathematically Hard
- LightOJ1007---Mathematically Hard (欧拉函数)
- LightOJ1007-Mathematically Hard-maths,前缀和
- LightOJ1007 Mathematically Hard 欧拉函数+前缀和
- LightOJ 1007 Mathematically Hard
- LightOJ 1007 Mathematically Hard
- Mathematically Hard LightOJ
- Light OJ 1007 - Mathematically Hard
- Light oj 1007 - Mathematically Hard
- lightoj 1007 - Mathematically Hard 欧拉函数
- Mathematically Hard (欧拉定理)
- lightoj 1007 - Mathematically Hard 欧拉函数
- LightOJ 1007 Mathematically Hard 欧拉函数
- LightOJ-1007-Mathematically Hard [欧拉函数]
- LIGHTOJ 1007 – MATHEMATICALLY HARD【欧拉函数】
- light oj 1007 Mathematically Hard (欧拉函数)
- LightOJ 1007 - Mathematically Hard (欧拉筛+预处理前缀和)
- jsp 显示全部头信息
- 安装完ubuntu系统后的优化
- ThreadLocal
- 矩阵基本运算
- Python与图像处理3
- LightOJ1007 Mathematically Hard
- Visual studio 创建项目失败vstemplate
- Visual Studio 自定义项目模板
- 如何使用git创建项目,创建分支
- Lua初识(7)_函数库
- 二分法排序C++
- 有效利用Oracle官方的免费学习资源
- 三个框架开头的限制文件加载和hibernate事务连接代码
- css float(2)