3643: Phi的反函数

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 141  Solved: 96
[Submit][Status][Discuss]

Description

Input

Output

Sample Input

4

Sample Output

5

HINT

Source

By Zky

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的反函数 数论 + 搜索的更多相关文章

  1. [BZOJ]3643 Phi的反函数

    我承认开这篇文章只是因为好笑…… 估计Zky神看见3737会很郁闷吧. http://www.lydsy.com/JudgeOnline/problem.php?id=3643 本来想直接交3737改 ...

  2. 【BZOJ 3643】Phi的反函数 数搜索

    这道题是典型的数搜索,讲究把数一层一层化小,而且还有最重要的大质数剪枝. #include <cstdio> #include <cmath> typedef long lon ...

  3. 【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 ...

  4. 【BZOJ】【2219】数论之神

    中国剩余定理+原根+扩展欧几里得+BSGS 题解:http://blog.csdn.net/regina8023/article/details/44863519 新技能get√: LL Get_yu ...

  5. bzoj3643 Phi的反函数

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3643 [题解] n = p1^a1*p2^a2*...*pm^am phi(n) = p1( ...

  6. [BZOJ 1085] [SCOI2005] 骑士精神 [ IDA* 搜索 ]

    题目链接 : BZOJ 1085 题目分析 : 本题中可能的状态会有 (2^24) * 25 种状态,需要使用优秀的搜索方式和一些优化技巧. 我使用的是 IDA* 搜索,从小到大枚举步数,每次 DFS ...

  7. Bzoj 3505: [Cqoi2014]数三角形 数论

    3505: [Cqoi2014]数三角形 Time Limits: 1000 ms  Memory Limits: 524288 KB  Detailed Limits   Description

  8. bzoj 2226: [Spoj 5971] LCMSum 数论

    2226: [Spoj 5971] LCMSum Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 578  Solved: 259[Submit][St ...

  9. bzoj 1053: [HAOI2007]反素数ant 搜索

    1053: [HAOI2007]反素数ant Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1497  Solved: 821[Submit][Sta ...

随机推荐

  1. Unshelve Instance 操作详解 - 每天5分钟玩转 OpenStack(39)

    上一节我们 shelve instance 到 Glance,本节讨论如何通过 unshelve 操作恢复该 instance. 因为 Glance 中保存了 instance 的 image,uns ...

  2. 【Linux】Vim语法高亮显示

    配置vim 1. 安装vim2. 在hom创建文件.vimrc3. 修改.vimrc内容 syntax=on4. 打开vim,完成! 注: 预转的Vim(比如我现在的Linux Mint)不是完整版, ...

  3. x01.Weiqi.12: 定式布局

    定式 下一步当将定式保存到数据库中,如布局中的代码所示,但其初始的代码更有利于理解.以小飞挂为例: // 0 // + 0 0 // + // // + List<Pos> P_LuSta ...

  4. [嵌入式开发]Linux性能分析——上下文切换

    一.从一个问题说起 相信很多人在玩手机还是PC时,都曾碰到过这样一种情况,安装的软件多了系统性能就变慢了,但是去查看CPU利用率一直都低于10%,内存也很充足.我在近期的开发工作中就碰到了类似的情况, ...

  5. android 项目中出现红色感叹号的解决方法

    问题原因]:工程中classpath中指向的包路径错误 [解决办法]:右键项目名称 BuildPath ---> Configure Build Paht...中,然后上面有几个选项卡找到 Li ...

  6. 【转】What is an SDET

    What is an SDET? SDET stands for Software Development Engineer in Test (or Software Design Engineer ...

  7. Ubuntu 部署Postgresql

    安装组件 客户端安装 sudo apt-get install postgresql-client 服务器安装 sudo apt-get install postgresql postgresql-c ...

  8. MultiThread

    Stephen Toub From MicroSoft Crop. Stephen Cleary It's All About the SynchronizationContext How would ...

  9. Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  10. http status 状态码汇总

    常见HTTP状态码 200 OK 301 Moved Permanently 302 Found 304 Not Modified 307 Temporary Redirect 400 Bad Req ...