hiho一下 第九十六周 数论五·欧拉函数
题目1 : 数论五·欧拉函数
描述
小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
解答:
开始没看提示的时候想着用辗转相除,然后枚举,找出最小的fn,当数据特别大的时候,时间复杂度很高,然后提交TLE,超时了,代码也分享一下:
#include"iostream"
#define MAX 50000 using namespace std; int gcd(int a,int b)
{
if(b==)
return a;
return gcd(b,a%b);
} int solve(int l,int r)
{
int fn[MAX];
int fn_date,min,loc;
for (int i = l; i <= r; i++){
fn_date = ;
for(int j=;j<i;j++)
if(gcd(i,j)==)
fn_date++;
fn[i]=fn_date;
//cout << fn[i] << endl;
} min = fn[l];
loc = l;
for (int i = l; i <= r; i++)
if (fn[i]<min)
{
min = fn[i];
loc = i;
} return loc;
} int main()
{
int k,l,r;
cin>>l>>r; cout<<solve(l,r);
system("pause"); }
改了的递推AC版本:
#include"iostream"
#define MAX 5000000 using namespace std; bool isPrime[MAX+];
int primeList[MAX+];
int phi[MAX];
int primeCount = ; int solve(int l, int r)
{
for (int i = ; i <= MAX; i++)
isPrime[i] = true, phi[i] = ; for (int i = ; i <= MAX; i++)
{
if (isPrime[i]) {
primeList[++primeCount] = i;
phi[i] = i - ;
} for (int j = ; j <= primeCount; j++) {
if (i*primeList[j] > MAX) break;
isPrime[i*primeList[j]] = false;
if (i%primeList[j] == ) {
phi[i*primeList[j]] = phi[i] * primeList[j];
break;
}
else phi[i*primeList[j]] = phi[i] * (primeList[j] - );
}
} int min = l;
for (int i = l; i <= r; i++)
if (phi[i]<phi[min])
{
min = i;
} return min;
} int main()
{
int k, l, r;
cin >> l >> r; cout << solve(l, r);
system("pause"); }
hiho一下 第九十六周 数论五·欧拉函数的更多相关文章
- hihoCoder 数论五·欧拉函数
题目1 : 数论五·欧拉函数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥.小Hi和小Ho约定 ...
- 【hihocoder 1298】 数论五·欧拉函数
[题目链接]:http://hihocoder.com/problemset/problem/1298 [题意] [题解] 用欧拉筛法; 能够同时求出1..MAX当中的所有质数和所有数的欧拉函数的值; ...
- 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}\ ...
- hiho一下 第九十八周 搜索一·24点
题目1 : 搜索一·24点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 周末,小Hi和小Ho都在家待着. 在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副 ...
- hihocode 第九十二周 数论一·Miller-Rabin质数测试
题目链接 检测n是否为素数,数据范围为2 <= n <= 10^18; 思路:Miller_Rabin素数检测模板题,原理:在Fetmat定理的基础之上,再利用二次探测定理: 对于任意的正 ...
- hihocoder hiho一下 第二十六周 最小生成树一·(Prim算法)
题目1 : 最小生成树一·Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥 ...
- 【NOIP训练】【规律+数论】欧拉函数的应用
Problem 1 [题目大意] 给出 多组数据 ,给出 求出 . 题解 证明: 除了 以为均为偶数, 所以互质的个数成对. 由 得 . 所以对于每对的和为 , 共有 对 . 则 Problem ...
- UVA 10820 - Send a Table 数论 (欧拉函数)
Send a Table Input: Standard Input Output: Standard Output When participating in programming contest ...
随机推荐
- 公司ERP系统重构那些事
记一次会议,我提出插件化的想法,有支持也有反对,其中"系统架构师"表示插件化后的项目没什么意义,今天来讨论项目是否需要插件化的一些观点. 项目背景 公司内部"ERP&qu ...
- openwrt的路由器重置root密码
家里路由器刷了openwrt,结果长期没登录,忘了root密码. 很容易就找到了这里介绍的办法 http://www.openwrt.org.cn/bbs/thread-12327-1-1.html ...
- [转] 再探java基础——break和continue的用法
原文地址:http://blog.csdn.net/luoweifu/article/details/10756017 break break可用于循环和switch...case...语句中. 用于 ...
- Jquery-控制table的奇偶数色列
css代码 <style> .even{background:#FFF38F;} .odd{background:#FFFFEE;} .selected{background:#FF990 ...
- Java-异常Throwable,Exception,Error
异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等. 异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程. Java通过API中Throwable类的众多子类描述各种不同的 ...
- Ibatis -- 一次执行多条SQL
<statement id="DeleteAccount" parameterClass="Account"> BEGIN DELETE FROM ...
- PostConstruct
Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解 1.6. @PostConstr ...
- POJ3233 Matrix Power Series
Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. ...
- NOIP2011 普及组 T3 洛谷P1309 瑞士轮
今天题做太少,放道小题凑数233 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公 ...
- 彻底理解position与anchorPoint
引言 相信初接触到CALayer的人都会遇到以下几个问题: 为什么修改anchorPoint会移动layer的位置?CALayer的position点是哪一点呢?anchorPoint与positio ...