【CF542D】Superhero's Job

题意:$ f(x)=\sum\limits_{d|x,gcd(d,{x\over d})=1} d$

给出 $A$ ,求方程 $f(x)=A$ 的正整数解的个数。

$1\le A\le 10^{12}$

题解:首先我们发现f这个函数是积性的,$f(p^a)=1+p^a$(p是质数)。所以我们枚举$A$的所有约数,看一下他能不能拆成$1+p^a$的形式,并把p相同的放到一起。设f[i]表示乘积为i的方案数,暴力DP即可。你甚至可以用map。

附:$10^{12}$以内约数最多的数为

#include <cstring>
#include <iostream>
#include <cstdio>
#include <map>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=1000000; ll n;
int num,m,cnt,tot,tim;
int ep[100];
int pri[N>>1],np[N+10],f[2][10000]; ll v[10000],pr[100];
struct node
{
int bel;
ll val;
}p[10000];
map<ll,int> ref,vis;
void dfs(int x,ll now)
{
if(x==m+1)
{
v[++tot]=now,ref[now]=tot;
return ;
}
for(int i=0;i<=ep[x];i++) dfs(x+1,now),now*=pr[x];
}
bool cmp(const node &a,const node &b)
{
return (a.bel==b.bel)?(a.val<b.val):(a.bel<b.bel);
}
int main()
{
scanf("%lld",&n);
int i,j,d=0;
ll tn=sqrt(n);
for(i=2;i<=tn;i++)
{
if(!np[i]) pri[++num]=i;
for(j=1;j<=num&&i*pri[j]<=tn;j++)
{
np[i*pri[j]]=1;
if(i%pri[j]==0) break;
}
}
ll t=n;
for(i=1;i<=num&&pri[i]*pri[i]<=t;i++) if(t%pri[i]==0)
{
pr[++m]=pri[i];
while(t%pri[i]==0) t/=pri[i],ep[m]++;
}
if(t!=1) pr[++m]=t,ep[m]=1;
dfs(1,1);
for(i=2;i<=tot;i++) if(v[i]!=2)
{
t=v[i]-1;
int flag=1;
for(j=1;j<=num&&pri[j]*pri[j]<=t;j++) if(t%pri[j]==0)
{
t/=pri[j];
while(t%pri[j]==0) t/=pri[j];
if(t!=1) flag=0;
else t=pri[j];
break;
}
if(flag)
{
p[++cnt].val=v[i];
if(!vis[t]) vis[t]=++tim;
p[cnt].bel=vis[t];
}
}
sort(p+1,p+cnt+1,cmp);
f[0][1]=1;
for(j=1;j<=cnt;j++)
{
if(p[j].bel!=p[j-1].bel) d^=1,memcpy(f[d],f[d^1],sizeof(f[0][0])*(tot+1));
for(i=1;i<=tot;i++) if(v[i]%p[j].val==0)
f[d][i]+=f[d^1][ref[v[i]/p[j].val]];
}
printf("%d",f[d][tot]);
return 0;
}

【CF542D】Superhero's Job 暴力的更多相关文章

  1. [CF542D]Superhero's Job

    [CF542D]Superhero's Job 题目大意: 定义函数 \[ J(x) = \sum_{\substack{1 \leq k \leq x \\ k \mid x \\ \gcd \le ...

  2. zone.js - 暴力之美

    在ng2的开发过程中,Angular团队为我们带来了一个新的库 – zone.js.zone.js的设计灵感来源于Dart语言,它描述JavaScript执行过程的上下文,可以在异步任务之间进行持久性 ...

  3. [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)

    Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...

  4. HDU 5944 Fxx and string(暴力/枚举)

    传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Othe ...

  5. 1250 Super Fast Fourier Transform(湘潭邀请赛 暴力 思维)

    湘潭邀请赛的一题,名字叫"超级FFT"最终暴力就行,还是思维不够灵活,要吸取教训. 由于每组数据总量只有1e5这个级别,和不超过1e6,故先预处理再暴力即可. #include&l ...

  6. fragment+viepager 的简单暴力的切换方式

    这里是自定义了一个方法来获取viewpager private static ViewPager viewPager; public static ViewPager getMyViewPager() ...

  7. ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力

     Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS     Memory Limit:65536KB     64bit IO Fo ...

  8. uoj98未来程序改 纯暴力不要想了

    暴力模拟A了,数据还是良(shui)心(shui)的 90分的地方卡了半天最后发现一个局部变量被我手抖写到全局去了,,, 心碎*∞ 没什么好解释的,其实只要写完表达式求值(带函数和变量的),然后处理一 ...

  9. 开源服务专题之------ssh防止暴力破解及fail2ban的使用方法

    15年出现的JAVA反序列化漏洞,另一个是redis配置不当导致机器入侵.只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/roo ...

随机推荐

  1. JAVA自学笔记21

    JAVA自学笔记21 1.转换流 由于字节流操作中文不是非常方便,因此java提供了转换流 字符流=字节流+编码表 1)编码表 由字符及其对应的数值组成的一张表 图解: 2)String类的编码和解码 ...

  2. history.go(-1)和History.back()的区别

    简单的说就是:go(-1): 返回上一页,原页面表单中的内容会丢失:back(-1): 返回上一页,原页表表单中的内容会保留,一般还是back(-1)用的多

  3. Wireshark抓包实例诊断TCP连接问题

    转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese  介绍 前文论述了TCP基础知识,从本节开始,通过TCP抓包实例来诊断TCP常见问 ...

  4. ECharts JS应用:图表页面实现

    因为要统计数据进行图表展示,所以就简单学习了 ECharts JS 的应用.它是一个纯Javascript图库,它依赖于一个轻量级的Canvas库 ZRender,并提供直观.生动.交互式和高度可定制 ...

  5. shell编程学习笔记(十一):Shell中的while/until循环

    shell中也可以实现类似java的while循环 while循环是指满足条件时,进行循环 示例: #! /bin/sh index=10 while [ $index -gt 0 ] do inde ...

  6. go微服务框架go-micro深度学习(二) 入门例子

    上一篇帖子简单介绍了go-micro的整体框架结构,这一篇主要写go-micro使用方式的例子,中间会穿插一些go-micro的源码,和调用流程图,帮大家更好的理解go-micro的底层.更详细更具体 ...

  7. Ubuntu 16.04 升级git

    To update git on Ubuntu 12.04 just follow this line of commands: sudo apt-get install python-softwar ...

  8. macOS 下 PHPStorm + Xdebug 调试 Docker 环境中的代码

    0x00 描述 宿主机是 mac mini,构建的项目在 docker 中,所以需要在 PHPStorm 上配置 Xdebug 进行远程代码调试. 0x01 环境 宿主机:macOS High Sie ...

  9. 【Spark深入学习 -12】Spark程序设计与企业级应用案例02

    ----本节内容------- 1.遗留问题答疑 1.1 典型问题解答 1.2 知识点回顾 2.Spark编程基础 2.1 Spark开发四部曲 2.2 RDD典型实例 2.3 非RDD典型实例 3. ...

  10. Spring的两种代理方式:JDK动态代理和CGLIB动态代理

    代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对 ...