3643: Phi的反函数

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 298  Solved: 192
[Submit][Status][Discuss]

Description

Input

 

Output

 

Sample Input

4

Sample Output

5
 
  这道题我只能说是一道披着搜索外衣的数学题,核心都在数学知识上,于是数学能力令人发指的我跪了……
  在讲这道题之前我们先明确一下几点:
    1.一个数x的质因子若大于sqrt(x)则这个质因子最多只有一个。
    2.我们设pk为已知数x的第k个素因子ak为该素因子在x的素因子中有几个则φ(x)=p1^(a1-1)*(p1-1)*p2^(a2-1)*(p2-1)……
    3.由1可知我们线筛只用筛到sqrt(INF),大于它直接暴力检测。
    4.由2可知如果对于一个素数p,p-1是n的因子,则p可对答案产生贡献。
  于是知道了以上几点我们就好说多了,我们只要枚举每一个素数p,如果p-1是当前now的因子就接下去dfs并枚举a,对于那个大于sqrt(n)的因子我们直接判断如果now+1是素数且now+1>sqrt(n),我们就检查他是否对答案有贡献。
  不知道有没有人和我和Q某犇一样对于是now+1还是now还是now-1有疑问。为了周全,我还是说一下。如果当前now满足以上条件那么此时now=p^(a-1)*(p-1),由于p大于sqrt(n),a一定为1,所以就变成了now=p-1,那么p=now+1。
  差点忘说了,我们为什么会去选择dfs这种方式呢?因为貌似可以证明,在题目给的数据最多只有10个(不同的)素因子,一个素因子最多只出现30次,所以dfs没跑。
 #include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cmath>
#include<map>
#define N 50005
using namespace std;
long long sq,n,ss[N],zz,ans=;
bool fss[N];
bool pri(long long x)
{
for(int i=;i<=sqrt(x);i++)
if(x%i==)return ;
return ;
}
void dfs(long long sum,long long wz,long long now)
{
if(sum>ans)return;
if(now==)
{
ans=min(ans,sum);
return;
}
if(now>sq&&pri(now+))ans=min(ans,(now+)*sum);
for(int i=wz;i<=zz&&ss[i]-<=sq&&ss[i]-<=now;i++)
{
if(now%(ss[i]-)==)
{
int x=now/(ss[i]-),y=sum*ss[i];
dfs(y,i+,x);
while(x%ss[i]==)
{
x/=ss[i],y*=ss[i];
dfs(y,i+,x);
}
}
}
}
int main()
{
scanf("%lld",&n);
sq=sqrt(n);
for(int i=;i<=sqrt(n);i++)
{
if(!fss[i])
{
zz++;
ss[zz]=i;
}
for(int j=;j<=zz&&i*ss[j]<N;j++)
{
fss[i*ss[j]]=;
if(i%ss[j]==)break;
}
}
dfs(,,n);
if(ans<2147483648ll)
printf("%lld\n",ans);
else printf("-1\n");
return ;
}

bzoj 3643Phi的反函数的更多相关文章

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

  2. [BZOJ]3643 Phi的反函数

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

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

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

  4. BZOJ 2818

    2818:GCD Description 给定整数$N$,求$1\le x,y\le N$且$\gcd{x,y}$为素数的数对$(x,y)$有多少对. Input $N$ Output RT Samp ...

  5. [bzoj 1471] 不相交路径 (容斥原理)

    题目描述 给出一个N(n<=150)N(n<=150)N(n<=150)个结点的有向无环简单图.给出444个不同的点aaa,bbb,ccc,ddd,定义不相交路径为两条路径,两条路径 ...

  6. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  7. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  8. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  9. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

随机推荐

  1. Android 调试桥(adb)是多种用途的工具

    Android 调试桥 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态. 可以通过下列几种方法加入adb: 在设备上运行shell命令 通过端口转发来管理 ...

  2. Win8 Metro(C#)数字图像处理--2.71Sigma平滑滤波器

    原文:Win8 Metro(C#)数字图像处理--2.71Sigma平滑滤波器  [算法说明]   Sigma平滑滤波器是构造一个模板,比如3*3大小的模板,计算这个模板对应的像素的标准差d,然后 ...

  3. 80%的岗位是没有太多能力上的要求的(少部分聪明的人开始觉醒,这部分一定是那些主动追求、主动学习的人;30岁现象能区分真正专业和不学无术的人)good

    不要沦陷程序员的30岁问题     热门> 就是学习能力和工作热情态度的问题. 我之前也跟作者一样思考过这个问题,答案是否定的. 在知识积累的行业,年纪越大,越吃香,比如金融,医学,IT.就怕3 ...

  4. 设置qt插件路径

    1.在Qt中使用 WebKit 浏览器核心 使用 QtWebKit 需要在工程文件(*.pro)中加入: QT +=webkitQT += network 2.QtWebKit的flash支持 QtW ...

  5. 10秒完成Linux系统pip在线安装

    对于Python开发攻城狮及系统运维攻城狮来说,pip的安装那是必不可少的一个过程.鉴于网上很多安装过程写得过于复杂,本人根据pip官方手册总结了以下最为快捷的安装方式,只需要2步操作. curl h ...

  6. 浏览器引擎-phantomjs初次认识

    最近没什么重要的任务,就抽空看了看项目组爬虫小组的代码,因为我们的爬虫主要是以python的scrapy框架为主,看起来比较方便.在看代码的时候看到一个叫phantomjs的东西,蛮新鲜的,就去问了下 ...

  7. CSS样式规范

    一般团队都有对CSS样式的规范,因为只有写的规范些,维护层本低,易懂.我们开发并不一次性的,往往都是要迭代的,如果这次随便写,下次迭代的时候将付出高昂的代价.而团队的规范一般都大同小异,往往都包含一下 ...

  8. HBase 学习之路(六)——HBase Java API 的基本使用

    一.简述 截至到目前(2019.04),HBase 有两个主要的版本,分别是1.x 和 2.x ,两个版本的Java API有所不同,1.x 中某些方法在2.x中被标识为@deprecated过时.所 ...

  9. spring 5.x 系列第21篇 —— spring 定时任务 (xml配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 关于任务的调度配置定义在springApp ...

  10. 【shell学习4》》】系统化整理大纲

    之前看的runnoob整理,细节太多也没有系统起来,昨天公交上看了一些视频,略作总结: 标题零:学习基础//创建文件touch testVar.sh //vim编辑内容#!/bin/bashvari= ...