【BZOJ-3643】Phi的反函数 数论 + 搜索
3643: Phi的反函数
Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 141 Solved: 96
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
Source
Solution
首先答案和N一定是同阶的,所以,可以很暴力的线筛扫一遍求解。
然后根据欧拉函数的式子,我们实际上是可以爆搜的。
爆搜他的质因子然后去凑答案,加最优性剪枝就可以跑过。
最关键的是依据欧拉函数的定义式找到规律!
Code
- #include<iostream>
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- #include<cstring>
- using namespace std;
- #define LL long long
- inline int read()
- {
- int x=,f=; char ch=getchar();
- while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
- while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
- return x*f;
- }
- #define MAXN 5100000
- int X,N;
- int prime[MAXN],flag[MAXN],cnt;
- void Getprime()
- {
- flag[]=; cnt=;
- for (int i=; i<=N; i++)
- {
- if (!flag[i]) prime[++cnt]=i;
- for (int j=; j<=cnt && prime[j]*i<=N; j++)
- {
- flag[i*prime[j]]=;
- if (prime[j]%i==) break;
- }
- }
- }
- LL ans=(1LL<<);
- LL sqr(LL x) {return (LL)x*x;}
- bool check(int x)
- {
- // if (flag[x]) return 0;
- for (int i=; sqr(prime[i])<=x && i<=cnt; i++) if (x%prime[i]==) return ;
- return ;
- }
- void DFS(int dep,LL sum,LL x,int last)
- {
- if (sum>=ans) return;
- if (x==) {ans=sum; return;}
- if (check(x+) && sqr(x)>X) ans=min(ans,sum*(x+));
- for (int i=last+; (prime[i]-)<=x && sqr(prime[i]-)<=X; i++)
- if (!(x%(prime[i]-)))
- {
- LL xx=(LL)x/(prime[i]-),summ=(LL)sum*prime[i];
- DFS(dep+,summ,xx,i);
- while (!(xx%prime[i])) xx=(LL)xx/prime[i],summ=(LL)summ*prime[i],DFS(dep+,summ,xx,i);
- }
- }
- int main()
- {
- X=read(); N=int(sqrt(X))+;
- if (X==) {puts(""); return ;}
- Getprime();
- DFS(,1LL,(LL)X,);
- printf("%lld\n",ans==(1LL<<)? -:ans);
- return ;
- }
仔细思考一下应该是可以想到的。
【BZOJ-3643】Phi的反函数 数论 + 搜索的更多相关文章
- [BZOJ]3643 Phi的反函数
我承认开这篇文章只是因为好笑…… 估计Zky神看见3737会很郁闷吧. http://www.lydsy.com/JudgeOnline/problem.php?id=3643 本来想直接交3737改 ...
- 【BZOJ 3643】Phi的反函数 数搜索
这道题是典型的数搜索,讲究把数一层一层化小,而且还有最重要的大质数剪枝. #include <cstdio> #include <cmath> typedef long lon ...
- 【BZOJ 3642】Phi的反函数
http://www.lydsy.com/JudgeOnline/problem.php?id=3643 因为\[\varphi(n)=\prod_i p_i^{k_i-1}(p_i-1),n=\pr ...
- 【BZOJ】【2219】数论之神
中国剩余定理+原根+扩展欧几里得+BSGS 题解:http://blog.csdn.net/regina8023/article/details/44863519 新技能get√: LL Get_yu ...
- bzoj3643 Phi的反函数
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3643 [题解] n = p1^a1*p2^a2*...*pm^am phi(n) = p1( ...
- [BZOJ 1085] [SCOI2005] 骑士精神 [ IDA* 搜索 ]
题目链接 : BZOJ 1085 题目分析 : 本题中可能的状态会有 (2^24) * 25 种状态,需要使用优秀的搜索方式和一些优化技巧. 我使用的是 IDA* 搜索,从小到大枚举步数,每次 DFS ...
- Bzoj 3505: [Cqoi2014]数三角形 数论
3505: [Cqoi2014]数三角形 Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description
- bzoj 2226: [Spoj 5971] LCMSum 数论
2226: [Spoj 5971] LCMSum Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 578 Solved: 259[Submit][St ...
- bzoj 1053: [HAOI2007]反素数ant 搜索
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1497 Solved: 821[Submit][Sta ...
随机推荐
- [原创]python之简单计算器(超详解,只有基本功能+-*/,还有括号处理)
不想看过程的话,直接看文章最后的正式源码 作业需求及分析: 流程图 https://www.processon.com/diagraming/580c5276e4b03c844a5a9716 初期感 ...
- 关于watir-webdriver中文乱码问题
require 'watir-webdriver' require 'iconv' cov = Iconv.new( 'gbk', 'utf-8') b = Watir::Browser.new b. ...
- Play Framework 完整实现一个APP(五)
程序以及基本可用了,需要继续完善页面 1.创建页面模板 创建文件 app/views/tags/display.html *{ Display a post in one of these modes ...
- OkHttp简介
什么是OKHttp 一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进行处理.比如可以使用http客户端与第三方服务(如SSO服 ...
- Oozie-4.0.0-cdh5.3.6搭建
到官网下载安装包 解压并cd到安装目录 解压目录下的 oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz 会自动解压成目录hadooplibs 创建文件夹 libext 将 ...
- Google在KDD2013上关于CTR的一篇论文
最近在做CTR,刚好Google在KDD发了一篇文章,讲了他们的一些尝试,总结一下: 先是一些公式的符号说明: 一.优化算法 CTR中经常用Logistic regression进行训练,一个常用的L ...
- 基于Ajax+div的“左边菜单、右边内容”页面效果实现
效果演示: ①默认页面(index.jsp): ②:点击左侧 用户管理 标签下的 用户列表 选项后,右边默认页面内容更新为用户列表页(userList.jsp)的内容 : ③:同理,点击 产品管理.订 ...
- I2C基础知识
常识 两条总线线路:串行数据总线SDA,串行时钟总线SCL 每个连接到总线的器件都有唯一的地址供其他设备寻址 每个连接到总线的器件都可以作为发送器和接收器 是多主机总线,如果两个或更多主机同时初始化, ...
- linux svn 服务端搭建
环境是centos6.x. 关于团队对代码管理,相信大部分人习惯于svn.不过我个人比较喜欢git的.这个blog git 常用命令 就是介绍git的基本用法.现部署svn服务端方式如下: 1. 用y ...
- Hadoop op 1)
设置yarn.scheduler.fair.user-as-default-queue =fasle, 就会阻止每一个用户使用自己默认的队列. 设置yarn.scheduler.fair.allow- ...