PA2013 Euler 社论

PA2013 Euler

给一个正整数 n,找到所有的 a 使得 φ(a)=n,其中 φ 是 Euler totient function .

n1010 .

n=i=1kpiαi,其中 pi 是素数,αi>0,则

φ(n)=i=1kpiαi1(pi1)

考虑枚举 n 的每个约数 d,若 d+1 是素数那么就有可能作为答案的质因子出现 .

于是暴力 DFS,对于每个数 n,每次枚举下一个要在答案中出现的素因子 p,然后令 nnp1 即可 .

不难发现只有 (p1)n 才可能有解,于是令 Di,j 表示第 i 个约数在第 j 个素数之后第一个能被整除的位置,转移的时候按 D 枚举即可,D 的预处理是平凡的 .

还得判一下一个因子 dn 的所有因子中的排名,按 n 分治即可用两个长 n 的数组维护 .

注意 n=1 时跳出 .

时间复杂度 O(nlogn),可能分析的不准,轻 D .

洛谷提交记录 R84926290 .

posted @   yspm  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
😅​
点击右上角即可分享
微信分享提示