【hihocoder 1298】 数论五·欧拉函数
【题目链接】:http://hihocoder.com/problemset/problem/1298
【题意】
【题解】
用欧拉筛法;
能够同时求出1..MAX当中的所有质数和所有数的欧拉函数的值;
基于
以下理论;
如果
①
n=p^k;这里p是某个质数;
(则只有p的倍数和n是不互质的)
则
phi[n]=pk−1−(pk/p−1)=(p−1)∗pk−1
②
n为质数;
phi[n] = n-1
③
若n和p互质;则
phi[n∗p]=phi[n]∗phi[p]
根据上面那3个结论;
①若i为p的倍数;
则phi[i*p]=phi[i]*p;
因为若i是p的倍数;
则
i可以表示为p^k*m
这里m是其他质数的乘积
显然p^k和m互质
则
phi[i] = phi[p^k]*phi[m] = (p-1)*p^(k-1)*phi[m]
phi[i*p]
=phi[p^(k+1)*m]
=phi[p^(k+1)]*phi[m]
=(p-1)*p^k*phi[m]
=(p-1)*p^(k-1)*phi[m]*p
=phi[i]*p
②若i不是p的倍数;
则i和p互质
则phi[i*p]=phi[i]*(p-1);
这里会枚举i和质数p;
容易联想到欧拉筛法;
在做素数筛法的时候顺便把欧拉函数也求出来就好;
【Number Of WA】
0
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 5e6+100;
const int MAX = 5e6;
bool iszs[N];
vector <int> zsb;
int phi[N],l,r;
int main()
{
ios::sync_with_stdio(false),cin.tie(0);//scanf,puts,printf not use
ms(iszs,true);
rep1(i,2,MAX)
{
if (iszs[i])
{
zsb.pb(i);
phi[i] = i-1;
}
int len = zsb.size();
rep1(j,0,len-1)
{
int t = zsb[j];
if (i*t>MAX) break;
iszs[i*t] = false;
if (i%t==0)
{
phi[i*t] = phi[i]*t;
break;
}
else
phi[i*t] = phi[i]*(t-1);
}
}
cin >> l >> r;
int ans = l;
rep1(i,l+1,r)
if (phi[ans]>phi[i])
ans = i;
cout << ans << endl;
return 0;
}
【hihocoder 1298】 数论五·欧拉函数的更多相关文章
- hihoCoder 数论五·欧拉函数
题目1 : 数论五·欧拉函数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥.小Hi和小Ho约定 ...
- hiho一下 第九十六周 数论五·欧拉函数
题目1 : 数论五·欧拉函数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥.小Hi和小Ho约定 ...
- hdu 1286:找新朋友(数论,欧拉函数)
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 「POJ3696」The Luckiest number【数论,欧拉函数】
# 题解 一道数论欧拉函数和欧拉定理的入门好题. 虽然我提交的时候POJ炸掉了,但是在hdu里面A掉了,应该是一样的吧. 首先我们需要求的这个数一定可以表示成\(\frac{(10^x-1)}{9}\ ...
- UVA 10820 - Send a Table 数论 (欧拉函数)
Send a Table Input: Standard Input Output: Standard Output When participating in programming contest ...
- CF1114F Please, another Queries on Array?(线段树,数论,欧拉函数,状态压缩)
这题我在考场上也是想出了正解的……但是没调出来. 题目链接:CF原网 题目大意:给一个长度为 $n$ 的序列 $a$,$q$ 个操作:区间乘 $x$,求区间乘积的欧拉函数模 $10^9+7$ 的值. ...
- LOJ6686 Stupid GCD(数论,欧拉函数,杜教筛)
做题重心转移到 LOJ 了. 至于为什么,如果你知道“……”的密码,就去看吧. LOJ 上用户自创题大多数都不可做,今天看到个可做题(而且还是个水题),就来做了一发. 明显枚举立方根.(以下令 $m= ...
- BZOJ2186 [Sdoi2008]沙拉公主的困惑 【数论,欧拉函数,线性筛,乘法逆元】
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 5003 Solved: 1725 [Submit] ...
- 【NOIP训练】【规律+数论】欧拉函数的应用
Problem 1 [题目大意] 给出 多组数据 ,给出 求出 . 题解 证明: 除了 以为均为偶数, 所以互质的个数成对. 由 得 . 所以对于每对的和为 , 共有 对 . 则 Problem ...
随机推荐
- WPF学习笔记——为BUTTON添加背景图片
首先要肯定,代码: <Style x:Key="UserItemButton" TargetType="Button"> <Setter Pr ...
- FFT模板——copied from hzwer
/* Welcome Hacking Wish You High Rating */ #include<iostream> #include<cstdio> #include& ...
- HTTP服务端JSON服务端
HTTP服务端JSON服务端 最后更新日期: 2014-5-18 Author: Kagula 阅读前提: CMake工具的基本使用 内容简介: CPPCMS是个开源Web开发框架,通过它可以很容易 ...
- KNN in c++
Pseudo Code of KNN We can implement a KNN model by following the below steps: Load the data Initiali ...
- PCB C# 连接MongoDB 数据库
一.C# MongoDB 驱动下载 1.百度网盘:nuget下载地址(V2.7版本) https://pan.baidu.com/s/1VDsVcH1TMrXqhRCZVewZgA 2.VS 中NUg ...
- bzoj3436: 小K的农场(差分约束)
3436: 小K的农场 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1575 Solved: 690[Submit][Status][Discus ...
- 自己对javascript闭包的了解
目录 闭包的概念 谈谈函数执行环境,作用域链以及变量对象 闭包和函数柯里化 闭包造成的额外的内存占用 (注意我说的不是“内存泄漏”!) 闭包只能取得包含函数的最后一个值 正文 前言: 在这篇文章里, ...
- selenium3 + Python - 处理浏览器弹窗(转载)
作者:Real_Tino 转载链接:https://blog.csdn.net/real_tino/article/details/59068827 我们在浏览网页时经常会碰到各种花样的弹窗,在做UI ...
- UOJ 129/BZOJ 4197 寿司晚宴 状压DP
//By SiriusRen #include <cstdio> #include <algorithm> using namespace std; ; struct Node ...
- POJ 1111(数字很吉利嘛) 简单BFS
Image Perimeters Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8594 Accepted: 5145 Desc ...