JZOJ1227 Coprime 题解
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
typedef long long ll;
const int N = 1e5 + 3;
const ll P = 131071;
int t, tot = 0, check[N], prime[N / 10];
ll n, m, jc[N], phi[N];
ll pow(ll x, ll p)
{
ll ret = 1;
while (p)
{
if (p & 1) ret = ret * x % P;
x = x * x % P;
p >>= 1;
}
return ret;
}
int main()
{
freopen("coprime.in", "r", stdin);
freopen("coprime.out", "w", stdout);
jc[1] = 1; for (int i = 2; i <= N - 3; i++) jc[i] = jc[i - 1] * i % P;
phi[1] = 1;
for (int i = 2; i <= N - 3; i++)
{
phi[i] = phi[i - 1];
if (!check[i]) phi[i] = phi[i] * (i - 1) % P * pow(i, P - 2) % P, prime[++tot] = i;
for (int j = 1; j <= tot; j++)
{
if (i * prime[j] > N - 3) break;
check[i * prime[j]] = 1;
if (i % prime[j] == 0) break;
}
}
scanf("%d", &t);
while (t--)
{
scanf("%lld%lld", &n, &m);
printf("%lld\n", phi[m] * jc[n] % P);
}
fclose(stdin);
fclose(stdout);
return 0;
}
作者:zjlcnblogs
出处:https://www.cnblogs.com/zjlcnblogs/p/8921212.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 2025成都.NET开发者Connect圆满结束
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析