【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 ...
随机推荐
- windows下solr7.9+tomcat7环境搭建
1.下载solr.tomcat(能够不用下载.由于solr有jetty支持) 2.solr部署到tomcat上 首先,把解压包下的solr-4.9.0\example\solr-webapp中的 ...
- 转:java身份证格式强校验
package com.dsh.zealandweb.utils; import java.util.HashSet; import java.util.regex.Pattern; import o ...
- mysql数据库操作(2)
上一篇文章我们接触了一些常用的 mysql 语句,当我们需要产生复杂的逻辑的时候,我们需要组合mysql语句,这时候的 mysql 语句又臭又长,那么我们就有必要知道 mysql 语句执行的顺序了. ...
- P2932 [USACO09JAN]地震造成的破坏Earthquake Damage 爆搜
这题怎么这么水~~~本来以为挺难的一道题,结果随便一写就过了...本来还不知道损坏的牛棚算不算,结果不明不白就过了... 题干: 农夫John的农场遭受了一场地震.有一些牛棚遭到了损坏,但幸运地,所有 ...
- HTML 14 JS事件
一 :什么是事件 发生的某一件事:触发特定的条件,完成某一项功能 二:学习的目的 在特定的条件下,完成特定的功能 条件满足的情况下,系统会自动执行 ( 回调 ) 绑定的方法 学习要点: 1.事件的两种 ...
- Python 42 mysql用户管理 、pymysql模块
一:mysql用户管理 什么是mysql用户管理 mysql是一个tcp服务器,应用于操作服务器上的文件数据,接收用户端发送的指令,接收指令时需要考虑到安全问题, ATM购物车中的用户认证和mysql ...
- xhtml1-transitional.dtd
<!-- Extensible HTML version 1.0 Transitional DTD This is the same as HTML 4 Transitional except ...
- Laravel5.1 学习笔记1, 目录结构和命名空间(待修)
自从用 Laravel4做了个小网站,使用了数据库ORM Eloquent, 就放下了一段时间,想不到这个与Asp.net MVC 有着异曲同工之妙的框架已经出了下个版本,而且还有不小的改动,因此不得 ...
- 【JAVA练习】- 接收三个班各四个学员的成绩,算平均分
package class_average; import java.util.Scanner;//调用Scanner类 public class average { public static vo ...
- OPPO R9sPlus MIFlash线刷TWRP Recovery ROOT详细教程
教程转载来自 残芯此生不换 OPPO R9sPlus 目前最简单的刷Recovery root 方法,强烈推荐 新机想要刷第三方卡刷包的最简单过程是: 手机关机-->下载M ...