hunnu11550[数学+搜索]欧拉函数
来源:互联网 发布:lcdp0端口定义 编辑:程序博客网 时间:2024/04/29 17:40
欧拉函数Time Limit: 3000ms, Special Time Limit:6000ms, Memory Limit:65536KBTotal submit users: 73, Accepted users: 59Problem 11550 : No special judgementProblem description 一个数x的欧拉函数Φ(x)定义为所有小于x的正整数中与x互质的数的数目,如小于5且和5互质的数有1、2、3、4,一共4个,故Φ(5)=4。
Output 输出需要的步数,如果无法得到,输出-1;
Sample Input
对于任意正整数x,我们定义两种操作:
1、f(x) = x + Φ(x);
2、g(x) = x * Φ(x);
现在,给定一个数a,问从1开始,需要多少步操作能得到a。
(如,当a = 2时,f(1)即为所求,故答案为1,而当a = 3时,f(f(1))即为所求,故答案为2)
Output 输出需要的步数,如果无法得到,输出-1;
Sample Input
23Sample Output
12Problem Source HUNNU Contest
打出欧拉函数表格,根据提供的公式做BFS搜索。。。
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#define LL long longusing namespace std;const int N = 100050;const int INF = 0x3f3f3f3f;int oula[N+5];int ans[N+5];void bfs(){ int i,j,k; queue<int> Q; for(i = 1;i<=N;i++) { oula[i]=i; ans[i] = INF; } for(i = 2;i<=N;i++) { if(i==oula[i]) { for(j = 1;j*i<=N;j++) { oula[j*i] = (oula[j*i]/i)*(i-1); } } } ans[1] = 0; Q.push(1); while(!Q.empty()) { int s = Q.front(); Q.pop(); if(s+oula[s]<=N&&ans[s+oula[s]]>ans[s]+1) { ans[s+oula[s]]=ans[s]+1; Q.push(s+oula[s]); } if((LL)s*oula[s]>N) continue; if((LL)s*oula[s]<=N&&ans[s*oula[s]]>ans[s]+1) { ans[s*oula[s]]=ans[s]+1; Q.push(s*oula[s]); } }}int main(){ LL i,j,k; int n; bfs(); while(~scanf("%d",&n)) { if(ans[n]==INF) puts("-1"); else printf("%d\n",ans[n]); } return 0;}
0 0
- hunnu11550[数学+搜索]欧拉函数
- hunnu11550:欧拉函数
- 欧拉函数(数学)
- 数学模板-欧拉函数
- [数学-欧拉函数]Pku2478--Farey Sequence
- 【数学】欧拉函数和相关结论
- 【学习总结】数学-欧拉函数
- 4173: 数学 欧拉函数 思路题
- bzoj 4173: 数学 欧拉函数
- BZOJ 4173: 数学 欧拉函数
- UVa 11426 - GCD - Extreme (II) (数学 欧拉函数)
- NYOJ 题目569最大公约数之和(欧拉函数,数学)
- HDU 1286 找新朋友(数学 欧拉函数)
- BZOJ-4173 数学 欧拉函数+关于余数的变换
- 【题】【数学(欧拉函数)】NKOJ3801 分解质因数
- bzoj 2226: [Spoj 5971] LCMSum 数学+欧拉函数
- RSA的数学基础——欧拉函数与欧拉定理
- hdu 1795(欧拉函数+二分搜索)
- Leetcode[219]-Contains Duplicate II
- COM学习笔记4_创建COM组件的实现
- Linux内核实现List二个关键的宏offsetof 和 container_of
- BYTE record :1啥意思
- spring使用注解实现AOP
- hunnu11550[数学+搜索]欧拉函数
- UILabel 对文字设置多个颜色 画中线
- maven+springMVC+mybatis+junit详细搭建过程
- Unity协程(Coroutine)原理深入剖析
- 接上:TabHost与RadioGroup结合完成的菜单
- Spring常用注解,自动扫描bean
- CF Regular Bridge()
- SAT写作--积累才是关键
- Node.js之缓冲模块Buffer