hihoCoder 数论五·欧拉函数

574人阅读 评论(0) 收藏 举报
分类:

题目1 : 数论五·欧拉函数

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥。小Hi和小Ho约定了一个区间[L,R],每次小Hi和小Ho会选择其中的一个数作为密钥。

小Hi:小Ho,这次我们选[L,R]中的一个数K。

小Ho:恩,小Hi,这个K是多少啊?

小Hi:这个K嘛,不如这一次小Ho你自己想办法算一算怎么样?我这次选择的K满足这样一个条件:

假设φ(n)表示1..n-1中与n互质的数的个数。对于[L,R]中的任意一个除K以外的整数y,满足φ(K)≤φ(y)且φ(K)=φ(y)时,K<y。

也即是K是[L,R]中φ(n)最小并且值也最小的数。

小Ho:噫,要我自己算么?

小Hi:没错!

小Ho:好吧,让我想一想啊。

<几分钟之后...>

小Ho:啊,不行了。。感觉好难算啊。

小Hi:没有那么难吧,小Ho你是怎么算的?

小Ho:我从枚举每一个L,R的数i,然后利用辗转相除法去计算[1,i]中和i互质的数的个数。但每计算一个数都要花好长的时间。

小Hi:你这样做的话,时间复杂度就很高了。不妨告诉你一个巧妙的算法吧:

提示:欧拉函数

输入

第1行:2个正整数, L,R,2≤L≤R≤5,000,000。

输出

第1行:1个整数,表示满足要求的数字K

样例输入
4 6
样例输出
4

题意:如上所说,即是K是[L,R]中φ(n)最小并且值也最小的数,本来以为会很难很难的题目,因为时间限制10000ms,然后看了一下欧拉函数!就……

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
using namespace std;
int eular(int n)                //欧拉函数
{
    int ret=1,i;
    for(i=2; i*i<=n; i++)
    {
        if(n%i==0)
        {
            n/=i,ret*=i-1;
            while(n%i==0)
                n/=i,ret*=i;
        }
    }
    if(n>1)ret*=n-1;
    return ret;
}
int s[5000005];
int main()
{
    int r,l;
    cin>>r>>l;
    int maxx=0xfffff,ji=0;
    for(int i=r; i<=l; i++)
    {
        s[i]=eular(i);
        if(s[i]<maxx)
        {
            maxx=s[i];
            ji=i;
        }
    }
    printf("%d\n",ji);
    return 0;
}

一次AC哦!


查看评论

HIHO #1298 : 数论五·欧拉函数

题目链接#include using namespace std; #define cl(a,b) memset(a,b,sizeof(a)) #define fastIO ios::sync_wit...
  • u013167299
  • u013167299
  • 2016-08-27 12:59:26
  • 289

数论的欧拉定理证明 &amp; 欧拉函数公式

欧拉函数 :欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) 。 完全余数集合:定义小于 n 且和 n 互质的数...
  • hillgong
  • hillgong
  • 2009-05-25 14:56:00
  • 18550

hihocoder 1298 : 数论五·欧拉函数

hihocoder 1298 描述 小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥。小Hi和小Ho约定了一个区间[L,R],每次小Hi和小Ho会选...
  • CYCKCN
  • CYCKCN
  • 2017-04-02 17:01:14
  • 156

BZOJ 4805 欧拉函数求和 数论

题目大意:给定N≤2∗109N\leq2*10^9,求∑Ni=1φ(i)\sum_{i=1}^N\varphi(i) 同BZOJ3944 这么喜欢炒冷饭?#include #include #...
  • PoPoQQQ
  • PoPoQQQ
  • 2017-03-31 20:58:19
  • 1550

Light OJ 1007 Mathematically Hard [欧拉函数+前缀和]【数论】

Mathematically HardTime Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Submi...
  • qq_33184171
  • qq_33184171
  • 2016-06-28 21:36:41
  • 490

数论学习笔记 欧拉函数 (一些性质和运用)内置杜教筛

定义在数论中,对正整数n,欧拉函数是小于等于n的数中与n互质的数的数目。并且用符号φ(n)\varphi(n)表示一个整数的欧拉函数。例如φ(8)=4\varphi(8) = 4。特殊的φ(1)=1\...
  • YxuanwKeith
  • YxuanwKeith
  • 2016-09-01 15:31:04
  • 3377

欧拉函数及其申引证明

1,概念         在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler'so totient function),它...
  • chen_YongZu
  • chen_YongZu
  • 2017-04-07 23:51:31
  • 361

kuangbin专题十四 数论基础 LightOJ-1370(欧拉函数的应用)

题意: 给出一些数字,每个数字都有一个对应的价值x,假设有一个数,小于它的数有x个与它互质,我们称它的价值是x。对于每个数字找到一个价值大于等于这个数的数,求找到的所有数的最小和。 ...
  • Start_to_crazy
  • Start_to_crazy
  • 2018-01-14 21:42:53
  • 63

NYOJ 570欧拉函数求和(欧拉函数&&数论入门)

欧拉函数求和 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 题目描述很简单,求出 (PS:上面式子的意思是大于0小于n并且...
  • u012349696
  • u012349696
  • 2014-10-13 21:40:00
  • 1301
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 37万+
    积分: 1万+
    排名: 1717
    寻找 Qianqian 遇见 就是幸运
    博客专栏
    最新评论