LightOJ-1007-Mathematically Hard-欧拉函数打表+前缀和+预处理
Mathematically some problems look hard. But with the help of the computer, some problems can be easily solvable.
In this problem, you will be given two integers a and b. You have to find the summation of the scores of the numbers froma to b (inclusive). The score of a number is defined as the following function.
score (x) = n2, where n is the number of relatively prime numbers with x, which are smaller than x
For example,
For 6, the relatively prime numbers with 6 are 1 and 5. So, score (6) = 22 = 4.
For 8, the relatively prime numbers with 8 are 1, 3, 5 and 7. So, score (8) = 42 = 16.
Now you have to solve this task.
Input
Input starts with an integer T (≤ 105), denoting the number of test cases.
Each case will contain two integers a and b (2 ≤ a ≤ b ≤ 5 * 106).
Output
For each case, print the case number and the summation of all the scores from a to b.
Sample Input
3
6 6
8 8
2 20
Sample Output
Case 1: 4
Case 2: 16
Case 3: 1237
Note

题意:
不是求区间内素数个数的平方和,是求区间内欧拉函数值的平方和
思路:欧拉函数打表(模板)+前缀和+预处理不然TLE
求欧拉函数1-N的打表模板:
void init()
{
memset(ans,,sizeof(ans));//一定要清空
ans[]=;
for(int i=; i<=N; i++)
{
if(ans[i]==)
{
for(int j=i; j<=N; j+=i)
{
if(ans[j]==)
{
ans[j]=j;
}
ans[j]=ans[j]/i*(i-);
} }
}
}
#include<stdio.h>
#include<map>
#include<string.h>
#include<iostream>
typedef long long ll;
using namespace std; const int N=*1e6+;
unsigned long long ans[N];//unsigned long long输出是%llu,long long会爆,前者20位,后者19位 void init()
{
memset(ans,,sizeof(ans));//一定要清空,不然WA
ans[]=;
for(int i=; i<=N; i++)
{
if(ans[i]==)
{
for(int j=i; j<=N; j+=i)
{
if(ans[j]==)
{
ans[j]=j;
}
ans[j]=ans[j]/i*(i-);
} }
}//欧拉函数打表
for(int i=; i<=N; i++)
{
ans[i]=ans[i-]+ans[i]*ans[i];//计算前缀和
}
}
int main()
{
init();
int tt=,t;
scanf("%d",&t);
while(t--)
{
int a,b;
scanf("%d %d",&a,&b);
printf("Case %d: %llu\n",tt++,ans[b]-ans[a-]);//取区间,左端区间-1,别弄错了
} return ;
}
LightOJ-1007-Mathematically Hard-欧拉函数打表+前缀和+预处理的更多相关文章
- lightoj 1007 - Mathematically Hard 欧拉函数应用
题意:求[a,b]内所有与b互质个数的平方. 思路:简单的欧拉函数应用,由于T很大 先打表求前缀和 最后相减即可 初次接触欧拉函数 可以在素数筛选的写法上修改成欧拉函数.此外本题内存有限制 故直接计算 ...
- light oj 1007 Mathematically Hard (欧拉函数)
题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...
- A - Bi-shoe and Phi-shoe (欧拉函数打表)
Description Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe is a ver ...
- hdu 2824 The Euler function 欧拉函数打表
The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- UVA 11426 GCD - Extreme (II)(欧拉函数打表 + 规律)
Given the value of N, you will have to find the value of G. The definition of G is given below:Here ...
- POJ 2478 欧拉函数打表的运用
http://poj.org/problem?id=2478 此题只是用简单的欧拉函数求每一个数的互质数的值会超时,因为要求很多数据的欧拉函数值,所以选用欧拉函数打表法. PS:因为最后得到的结果会很 ...
- LightOJ 1370- Bi-shoe and Phi-shoe (欧拉函数)
题目大意:一个竹竿长度为p,它的score值就是比p长度小且与且与p互质的数字总数,比如9有1,2,4,5,7,8这六个数那它的score就是6.给你T组数据,每组n个学生,每个学生都有一个幸运数字, ...
- nyoj 1007 GCD(数学题 欧拉函数的应用)
GCD 描述 The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b) ...
- LightOJ - 1370 Bi-shoe and Phi-shoe (欧拉函数打表)
题意:给N个数,求对每个数ai都满足最小的phi[x]>=ai的x之和. 分析:先预处理出每个数的欧拉函数值phi[x].对于每个数ai对应的最小x值,既可以二分逼近求出,也可以预处理打表求. ...
随机推荐
- python 进程与线程 精要
程序与进程 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程. 程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本:进程是程序的一次 ...
- 改变this 指向的3种方法
1.在函数内部声明一个that,然后将this赋值给that, var that=this; 最后用that 代替this使用 <!DOCTYPE html> <html lang= ...
- C语言 常量
常量的定义:在运行过程中,其值不能改变的量称为常量. 常量的分类 整型常量 实型常量 字符常量 demo #include <stdio.h> void main() { printf ...
- __str__方法
"""str()就是可以自定义输出返回值,必须是str字符串""" class Dog: def __init__(self, name): ...
- wordpress翻译插件gtranslate
https://www.gdstautoparts.com/
- 使用jQuery函数
1选择器 1.1说明 选择器本身只是一个有特定语法规则的字符串, 没有实质用处,它的基本语法规则使用的就是CSS的选择器语法, 并对基进行了扩展,只有调用$(), 并将选择器作为参数传入才能起作用. ...
- java script 基本函数
Math.random() 是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值. 日期时间函数(需要用变量调用):var b = new Date(); // ...
- 2017-3-7html基础
一:<html><!--html文档的开始--> <head><!--头标签,html文档的开头,来描述html文档的信息,head之间的内容不会在浏览器中显 ...
- bzoj 2751
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2751 稍微推一下就知道是每一位置可取的值的和乘起来 #include <iostrea ...
- Openssl命令的使用
用途: pkcs8格式的私钥转换工具.它处理在PKCS#8格式中的私钥文件.它可以用多样的PKCS#5 (v1.5 and v2.0)和 PKCS#12算法来处理没有解密的PKCS#8 Private ...