LINK:Divisor Paths

考试的时候已经想到结论了 可是质因数分解想法错了 导致自闭。

一张图 一共有D个节点 每个节点x会向y连边 当且仅当y|x,x/y是一个质数。

设f(d)表示d的约数个数 那么x->y的无向边的边权为f(x)-f(y);

每次询问两个点x,y之间的最短路径的条数有多少条,保证x|D,y|D.

不妨假设x>y.当y|x时容易发现y只需要每次在保证次数大于x的质因子上不断将自己本身的一个质数因子去掉即可。

不难发现 此时最短路长度为1 因为不管中间去的方式如何最后得到的是同一个值。

可以发现 此时我们完全可以把 y当成1 把x当成x/y 来计算。

可以发现x不会增加一个质因子 因为最后还是要减掉这是不优的。

方案容易看出是排列数/每个质因子的阶乘。

考虑当y不整除x的时候

有几种选择 x->gcd(x,y)->y x->lcm(x,y)->y.

考虑第一种 x不可能往比gcd更小的点走 因为那样走只是在白白的增加恭喜罢了 同理第二种 x不会往比lcm更大的走。

可以发现 gcd(x,y)->y和x->lcm(x,y)中 显然前者一定小于后者。

考虑 x->gcd(x,y) 和 lcm(x,y)->y 中 也很显然前者一定小于后者。

再考虑路径x->gcd(x,y)这个东西 可以证明中途的时候去跑到y的质因子上面带来的结果会更差。

综上算出两条路径的方案之积即可。

考试的时候 sb的地方是 发现给出的x y质因数分解复杂度会高达1e7发现做不了。

但是我们考虑直接拿质数来筛 因为都是D的因数 所以拿D里面的质因数筛即可。

可以发现D里面的质因数不超过13个。

这样只用暴力分解D即可、

const ll MAXN=60;
ll D,n,top,maxx;
ll c[MAXN],w[MAXN],s[MAXN];
ll fac[MAXN],inv[MAXN];
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll ksm(ll b,ll p){ll cnt=1;while(p){if(p&1)cnt=cnt*b%mod;p=p>>1;b=b*b%mod;}return cnt;}
inline void prepare()
{
fac[0]=1;
rep(1,maxx,i)fac[i]=fac[i-1]*i%mod;
inv[maxx]=ksm(fac[maxx],mod-2);
fep(maxx-1,0,i)inv[i]=inv[i+1]*(i+1)%mod;
}
inline ll solve(ll x)
{
ll cnt=0;
rep(1,top,i)
{
c[i]=0;
if(x%s[i]==0)while(x%s[i]==0)++c[i],x/=s[i];
cnt+=c[i];
}
ll ans=fac[cnt];
rep(1,top,i)ans=ans*inv[c[i]]%mod;
return ans;
}
signed main()
{
freopen("1.in","r",stdin);
get(D);ll cc=D;
for(ll i=2;i*i<=cc;++i)
{
if(cc%i==0)
{
s[++top]=i;
while(cc%i==0)cc/=i,++w[top];
}
}
if(cc>1)s[++top]=cc,++w[top];
rep(1,top,i)maxx+=w[i];
get(n);prepare();
rep(1,n,i)
{
ll x,y;
get(x);get(y);
ll gg=gcd(x,y);
putl(solve(x/gg)*solve(y/gg)%mod);
}
return 0;
}

E CF R 85 div2 1334E. Divisor Paths的更多相关文章

  1. CF R 639 div2 F Review 贪心 二分

    LINK:Résumé Review 这道题让我眼前一亮没想到二分这么绝. 由于每个\(b_i\)都是局部的 全局只有一个限制\(\sum_{i=1}^nb_i=k\) 所以dp没有什么用 我们只需要 ...

  2. CF R 635 div2 1337D Xenia and Colorful Gems 贪心 二分 双指针

    LINK:Xenia and Colorful Gems 考试的时候没想到一个很好的做法. 赛后也有一个想法. 可以考虑答案的样子 x,y,z 可以发现 一共有 x<=y<=z,z< ...

  3. CF R 632 div2 1333F Kate and imperfection

    赛后看了半天题 才把题目看懂 英语水平极差. 意思:定义一个集合S的权值为max{gcd(a,b)};且\(a\neq b\) 这个集合可以从1~n中选出一些数字 求出当集合大小为k时的最小价值. 无 ...

  4. CF R 632 div2 1333D Challenges in school №41

    LINK:Challenges in school №41 考试的时候读错题了+代码UB了 所以wa到自闭 然后放弃治疗. 赛后发现UB的原因是 scanf读int类型的时候 宏定义里面是lld的类型 ...

  5. CF R 630 div2 1332 F Independent Set

    LINK:Independent Set 题目定义了 独立集和边诱导子图.然而和题目没有多少关系. 给出一棵树 求\(\sum_{E'\neq \varnothing,E'\subset E}w(G( ...

  6. CF Round #580(div2)题解报告

    CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然 ...

  7. CF round #622 (div2)

    CF Round 622 div2 A.简单模拟 B.数学 题意: 某人A参加一个比赛,共n人参加,有两轮,给定这两轮的名次x,y,总排名记为两轮排名和x+y,此值越小名次越前,并且对于与A同分者而言 ...

  8. CF R 635 div1 C Kaavi and Magic Spell 区间dp

    LINK:Kaavi and Magic Spell 一打CF才知道自己原来这么菜 这题完全没想到. 可以发现 如果dp f[i][j]表示前i个字符匹配T的前j个字符的方案数 此时转移变得异常麻烦 ...

  9. 【CF】323 Div2. D. Once Again...

    挺有意思的一道题目.考虑长度为n的数组,重复n次,可以得到n*n的最长上升子序列.同理,也可以得到n*n的最长下降子序列.因此,把t分成prefix(上升子序列) + cycle(one intege ...

随机推荐

  1. SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束

    SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束   其实这里知识不难,只是好久不接触突然被问的话有时还真的一时答不上,自己写一遍胜过盲扫.当然,也有些常读常新的地方会 ...

  2. 状压DP之互不侵犯

    题目描述 这里 在\(N*N\) 的棋盘里面放\(k\)个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 输入格式 只有 ...

  3. 「疫期集训day1」无言

    正式集训第一天,感觉没啥特别大的感受,无非是奥赛时间延长了,效率提高了,身外事少了 当然不止这些 感受1:有些曾经被恶的题现在仍然在恶心,例如昨天的farmcraft,今天的整数划分(和着多边形一块调 ...

  4. cmake的下载和安装

    背景: 最近迷上了 vscode 编辑器, 快速便捷,而且插件丰富,使用起来很爽.既然这样,本身游戏也是用 mingw 加 cygwin 开发的, 可以配置一下,开搞. 实操: 1.登陆cmake官网 ...

  5. Jmeter系列(41)- Jmeter + Ant +Jenkins 持续集成

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html Window 环境准备 安装 ant: ...

  6. 题解:2018级算法第六次上机 C6-不Nan的过河

    题目描述: 样例: 实现解释: 一道因为没排序做了一个小时没做出来的二分答案模板题(手动呲牙) 知识点: 二分答案,最大值最小化 坑点: 排序,judge(mid)函数内计数的实现 其实从最长一步的最 ...

  7. shell专题(四):Shell中的变量

    4.1 系统变量 1. 常用系统变量 $HOME.$PWD.$SHELL.$USER等 2.案例实操 (1)查看系统变量的值 [atguigu@hadoop101 datas]$ echo $HOME ...

  8. redis(十三):Redis 集合(Set) python

    # -*- coding: utf-8 -*- import redis r = redis.Redis(host="126.56.74.190",port=639,passwor ...

  9. Tomcat的基本使用及相关知识的概述(超详细版)

    絮絮叨叨: 在深入了解Tomcat源码之前,本来是想亲自写一篇Tomcat的基本使用教程的,在网上兜兜转转发现了这篇博客:https://blog.csdn.net/weixin_40396459/a ...

  10. redis入门指南(四)—— redis如何节省空间

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 节省空间 1.redis对于它所支持的五种数据类型,每种都提供了两种及以上的编码方式去存储(具体 ...