【BZOJ 3643】Phi的反函数 数搜索
这道题是典型的数搜索,讲究把数一层一层化小,而且还有最重要的大质数剪枝。
#include <cstdio>
#include <cmath>
typedef long long LL;
int n;
const int N=;
const LL Inf=0x7fffffff;
LL ans;
int len,prime[N];
bool isnot[N];
inline void getprime(){
int lim=;
for(int i=;i<=lim;i++){
if(!isnot[i])prime[++len]=i;
for(int j=;prime[j]*i<=lim;j++){
isnot[prime[j]*i]=;
if(i%prime[j]==)break;
}
}
}
inline bool isprime(int x){
if(x==)return ;
int lim=(int)sqrt(x+0.5);
for(int i=;prime[i]<=lim;i++)
if(x%prime[i]==)
return ;
return ;
}
inline LL Min(LL x,LL y){
return x<y?x:y;
}
void dfs(int pos,LL now,int rest){
if(pos>=len)return;
if(now>=ans)return;
if(rest==){ans=now;return;}
if(isprime(rest+)){ans=Min(ans,now*(rest+));return;}
LL have=prime[pos]-,j=prime[pos];
if(pos==)have<<=,j<<=;
while(rest%have==)
dfs(pos+,now*j,rest/have),have*=prime[pos],j*=prime[pos];
dfs(pos+,now,rest);
}
int main(){
getprime(),scanf("%d",&n),ans=Inf+;
if(n<=){printf("-1");return ;}
if(n==){printf("");return ;}
dfs(,,n);
printf("%lld",ans==Inf+?-:ans);
}
【BZOJ 3643】Phi的反函数 数搜索的更多相关文章
- [BZOJ]3643 Phi的反函数
我承认开这篇文章只是因为好笑…… 估计Zky神看见3737会很郁闷吧. http://www.lydsy.com/JudgeOnline/problem.php?id=3643 本来想直接交3737改 ...
- 【BZOJ-3643】Phi的反函数 数论 + 搜索
3643: Phi的反函数 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 141 Solved: 96[Submit][Status][Discuss ...
- [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛)
[BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛) 题面 我们知道,从区间\([L,R]\)(L和R为整数)中选取N个整数,总共有\((R-L+1)^N\)种方案.求最大公约数 ...
- 【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 ...
- bzoj3643 Phi的反函数
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3643 [题解] n = p1^a1*p2^a2*...*pm^am phi(n) = p1( ...
- [BZOJ 1026] [SCOI 2009] Windy数 【数位DP】
题目链接:BZOJ - 1026 题目分析 这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题.. 对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a ...
- [BZOJ 1085] [SCOI2005] 骑士精神 [ IDA* 搜索 ]
题目链接 : BZOJ 1085 题目分析 : 本题中可能的状态会有 (2^24) * 25 种状态,需要使用优秀的搜索方式和一些优化技巧. 我使用的是 IDA* 搜索,从小到大枚举步数,每次 DFS ...
- ●BZOJ 4408 [Fjoi 2016]神秘数
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题解: 主席树 首先,对于一些数来说, 如果可以我们可以使得其中的某些数能够拼出 1- ...
- 【bzoj 3233】[Ahoi2013]找硬币 ——搜索
Description 小蛇是金融部部长.最近她决定制造一系列新的货币.假设她要制造的货币的面值为x1,x2,x3… 那么x1必须为1,xb必须为xa的正整数倍(b>a).例如 1,5,125, ...
随机推荐
- hadoop生态搭建(3节点)-05.mysql配置_单节点
# ==================================================================node1 # ======================== ...
- hive 学习系列五(hive 和elasticsearch 的交互,很详细哦,我又来吹liubi了)
hive 操作elasticsearch 一,从hive 表格向elasticsearch 导入数据 1,首先,创建elasticsearch 索引,索引如下 curl -XPUT '10.81.17 ...
- java简单界面实现
import javax.swing.JFrame; import javax.swing.JPanel; public class DemoFrame extends JFrame{ public ...
- 数字滤波器的MATLAB与FPGA实现--Altera/Verilog版的pdf版,杜勇等编著的书。
自己在网上找了很久才找到的资源,花了很大的劲,觉得不易,特地分享给大家.本书讲了使用FPGA的Fir IIR IP核与Matlab配合使用生成滤波器的详细使用方法.贴出地址,http://downlo ...
- JAVA判断时间是否在时间区间内
package com.liying.tiger.test; import java.text.ParseException; import java.text.SimpleDateFormat; i ...
- [Codeforces888E]Maximum Subsequence(暴力+meet-in-the-middle)
题意:给定n.m.有n个数,选出若干数加起来对m取模,求最大值 n<=35 如果直接暴力就是235,会T, 这里用到一个思想叫meet-in-the-middle, 就是把数列分成两半分别搜索, ...
- 販売管理(SD)
SD(販売管理)系のSAP DBテーブル. 随時更新していきます. [得意先マスタ]KNA1: 一般データ KNB1: 会計データ KNBK: 銀行データ KNVV: 販売データ KNVP: 取引先機 ...
- The Road to learn React书籍学习笔记(第四章)
高级React组件 本章将重点介绍高级 React 组件的实现.我们将了解什么是高阶组件以及如何实现它们.此外,我们还将深入探讨 React 中更高级的主题,并用它实现复杂的交互功能. 引用 DOM ...
- C#获取网络图片
简单获取图片 string url = zhi_txt.Text;//图片地址 string dizhi = lujing.Text;//图片下载后保存路径及图片名称要写在一块 WebClient w ...
- 纯js生成QRCode
纯js,不依赖jquery,非常好用,废话不多说,直接上代码! <!DOCTYPE html> <html> <head> <meta charset=&qu ...