【题目链接】: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】 数论五·欧拉函数的更多相关文章

  1. hihoCoder 数论五·欧拉函数

    题目1 : 数论五·欧拉函数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥.小Hi和小Ho约定 ...

  2. hiho一下 第九十六周 数论五·欧拉函数

    题目1 : 数论五·欧拉函数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥.小Hi和小Ho约定 ...

  3. hdu 1286:找新朋友(数论,欧拉函数)

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  4. 「POJ3696」The Luckiest number【数论,欧拉函数】

    # 题解 一道数论欧拉函数和欧拉定理的入门好题. 虽然我提交的时候POJ炸掉了,但是在hdu里面A掉了,应该是一样的吧. 首先我们需要求的这个数一定可以表示成\(\frac{(10^x-1)}{9}\ ...

  5. UVA 10820 - Send a Table 数论 (欧拉函数)

    Send a Table Input: Standard Input Output: Standard Output When participating in programming contest ...

  6. CF1114F Please, another Queries on Array?(线段树,数论,欧拉函数,状态压缩)

    这题我在考场上也是想出了正解的……但是没调出来. 题目链接:CF原网 题目大意:给一个长度为 $n$ 的序列 $a$,$q$ 个操作:区间乘 $x$,求区间乘积的欧拉函数模 $10^9+7$ 的值. ...

  7. LOJ6686 Stupid GCD(数论,欧拉函数,杜教筛)

    做题重心转移到 LOJ 了. 至于为什么,如果你知道“……”的密码,就去看吧. LOJ 上用户自创题大多数都不可做,今天看到个可做题(而且还是个水题),就来做了一发. 明显枚举立方根.(以下令 $m= ...

  8. BZOJ2186 [Sdoi2008]沙拉公主的困惑 【数论,欧拉函数,线性筛,乘法逆元】

    2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 5003  Solved: 1725 [Submit] ...

  9. 【NOIP训练】【规律+数论】欧拉函数的应用

    Problem 1 [题目大意] 给出 多组数据 ,给出  求出 . 题解 证明:  除了 以为均为偶数, 所以互质的个数成对. 由 得 . 所以对于每对的和为 , 共有 对 . 则 Problem ...

随机推荐

  1. 2014百度之星第二题Disk Schedule(双调欧几里得旅行商问题+DP)

    Disk Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  2. SharePoint 2013 改动表单认证登录页面

    前 言 之前的博客我们介绍了怎样为SharePoint配置表单登陆,可是.登陆页面是丑.非常丑.非常丑.特别非常丑! 我们如今就介绍一下怎样定制SharePoint表单登陆页面! SharePoint ...

  3. LeetCode208:Implement Trie (Prefix Tree)

    Implement a trie with insert, search, and startsWith methods. Note: You may assume that all inputs a ...

  4. Ubuntu下在Eclipse IDE for C/C++ Developers中怎样执行C语言的GTK程序?(已解决)

    (已解决.详见Ubuntu 12.04下在Eclipse IDE for C/C++ Developers中执行C语言的GTK程序) 按"Ubuntu下GTK的安装.编译和測试"( ...

  5. Extjs grid 某列点击弹窗

    { header : "单号", tooltip : '单号', dataIndex : 'transportCode', width : 130, sortable : true ...

  6. oc48--多个对象内存管理练习

    // // main.m // 多个对象内存管理练习 // // ARC是Xcode帮我们生成内存释放的代码,MRC是需要我买自己写retain和release.想研究内存管理只能在MRC,管理对象就 ...

  7. splunk的bucket组织目录——时间序列,按照时间来组织目录

    splunk的bucket组织目录:db_1481515116_1480695302_0db_1481537316_1481532688_1db_1481547598_1481539988_2db_1 ...

  8. hdoj--1220--Cube(数学推导)

    Cube Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  9. bzoj2595 [Wc2008]游览计划——斯坦纳树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2595 今天刚学了斯坦纳树,还不太会,写一道题练习一下: 参考了博客:http://www.c ...

  10. nodejs--Nodejs单元测试小结

    前言 最近在写一课程的Project,用Node写了一个实时聊天小应用,其中就用到了单元测试.在写Node单元测试的时候,一方面感受到了单元测试的重要性,另一方面感受到了Node单元测试的不够成熟,尚 ...