P4139 上帝与集合的正确用法 题解
1.Fair Warning2.CSES1081:Common Divisors3.P3951 小凯的疑惑4.SGU 140 题解5.CF1579F 题解6.P5944 出圈游戏 题解7.P2480 古代猪文 题解8.P4774 屠龙勇士 题解
9.P4139 上帝与集合的正确用法 题解
10.P1463 反质数11.P3182 放棋子12.线性代数基础和矩阵树定理13.OGF 学习笔记14.EGF 学习笔记15.FFT 与 NTT 学习笔记16.多项式全家桶17.CF392C Yes Another Number Sequence18.FFT 优化常系数齐次线性递推式19.普通/下降幂多项式平移20.普通多项式、连续点值、下降幂多项式的关系21.P1891 疯狂 LCM22.FMT 与 FWT23.集合幂级数与子集卷积我觉得这题最有意思的其实是 "最终会固定为一个数" 这个结论。
扩展欧拉定理:
所以
复杂度如何保证?其实就是算
发现:若
#include <bits/stdc++.h>
using namespace std;
const int N = 1e7 + 5;
typedef long long ll;
int T;
int p, phi[N];
bool isp[N] = {};
int cnt = 0, pr[N];
void init() {
memset(isp, true, sizeof isp);
isp[0] = isp[1] = false;
phi[1] = 1;
for (int i = 2; i <= N - 5; i++) {
if (isp[i]) {
pr[++cnt] = i;
phi[i] = i - 1;
}
for (int j = 1; j <= cnt && pr[j] * i <= N - 5; j++) {
isp[pr[j] * i] = false;
if (i % pr[j] == 0) {
phi[pr[j] * i] = phi[i] * pr[j];
break;
}
phi[pr[j] * i] = phi[pr[j]] * phi[i];
}
}
}
ll fpow(ll a, ll b, ll p) {
ll mul = 1;
while (b) {
if (b & 1)
mul = mul * a % p;
a = a * a % p;
b >>= 1;
}
return mul;
}
ll f(ll p) {
if (p == 1)
return 0;
return fpow(2, f(phi[p]) + phi[p], p);
}
void write(__int128 x) {
if (x < 0) {
putchar('-');
write(-x);
return ;
}
if (x < 10) {
putchar((char)(x + '0'));
return ;
}
write(x / 10);
putchar((char)(x % 10 + '0'));
return ;
}
int main() {
init();
cin >> T;
while (T--) {
cin >> p;
// cout << phi[p] << endl;
cout << f(p) << endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!