当前位置: 首页 > news >正文

P2480 学习笔记

话说 [SDOI2010] 为啥题目里都带了猪,还包括那个臭名昭著的猪国杀。

题目传送门

题目难度:

这个题目太长了,我的盟友 tangtianyao0123 告诉我其实是求这个式子的值:

\[g^{\sum_{i\mid n} C_n^i}\bmod999911659 \]

我们写一个质数判断知道 \(999911659\) 是质数,由欧拉定理

\[a^b\bmod p=a^{b\bmod p-1}\bmod p \]

那么我们其实只要求

\[g^{\sum_{i\mid n} C_n^i \bmod 999911658}\bmod999911659 \]

加上结合律:

\[g^{\sum_{i\mid n} (C_n^i \bmod 999911658)}\bmod999911659 \]

经过我们不为人知的方式,我们知道 \(999911658\) 是可以分解成 \(2\times3\times4679\times35617\) 的,运用一下 Lucas 定理,和 重庆轨道交通 \(^1\) 中国剩余定理 CRT 的小枚举求法即可。

code
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <climits>
#define I using
#define AK namespace
#define IOI std
#define A return
#define C 0
#define int long long
#define Ofile(s) freopen(s".in", "r", stdin), freopen (s".out", "w", stdout)
#define Cfile(s) fclose(stdin), fclose(stdout)
#define fast ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
I AK IOI;using ll = long long;
using ull = unsigned long long;
using lb = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pil = pair<int, ll>;
using pli = pair<ll, int>;constexpr int mod = 999911658;
constexpr int maxn = 35620;int n, g, ans;int jc[maxn], c[4] = {2, 3, 4679, 35617}, d[4];int binpow(int a, int b, int m){int res = 1;while (b){if (b & 1)res = (res * a) % m;a = (a * a) % m;b >>= 1;}return res;
}//快速幂int calC(int n, int m, int p){if (n < m)A C;A jc[n] % p * binpow(jc[m], p - 2, p) % p * binpow(jc[n - m], p - 2, p) % p;//用组合数公式计算组合数
}int Lucas(int n, int m, int p){if (!m)A 1;A Lucas(n / p, m / p, p) % p * calC(n % p, m % p, p) % p;//用 Lucas 定理
}int CRT(){int p = 1, ans = C;for (int i = 0; i < 4; i++){while (ans % c[i] != d[i])ans += p;p = p / __gcd(p, c[i]) * c[i];}return ans;
}//枚举求 CRTvoid init(){jc[0] = 1;for (int i = 1; i <= maxn - 3; i++)jc[i] = jc[i - 1] * i % mod;
}//阶乘数组初始化signed main() {fast;freopen("std.in", "r", stdin);freopen("std.out", "w", stdout);init();cin >> n >> g;for (int i = 1; i * i <= n; i++){if (n % i)continue;//求和要求d[0] = Lucas(n, i, 2);d[1] = Lucas(n, i, 3);d[2] = Lucas(n, i, 4679);d[3] = Lucas(n, i, 35617);ans = (ans + CRT()) % mod;if (n / i != i){d[0] = Lucas(n, n / i, 2);d[1] = Lucas(n, n / i, 3);d[2] = Lucas(n, n / i, 4679);d[3] = Lucas(n, n / i, 35617);ans = (ans + CRT()) % mod;}}if (g == 999911659) A cout << C, C;//这个不加会**else A cout << binpow(g, ans, 999911659), C;A C;
}
http://www.jsqmd.com/news/334732/

相关文章:

  • MIT与ETH Zurich团队推出SDFT方法:让AI在学新技能时不忘旧本领
  • CF2060E Graph Composition
  • Linux命令-logsave(将命令的输出保存到指定日志文件)
  • 标注不规范,大模型全白练:聊聊训练大模型背后的规模化数据治理与标注流水线
  • iPhone 11 Pro Max:外观配色|核心参数|体验点评|二手验机避坑清单(图文版)
  • Modbus 协议 学习一则
  • Linux命令-logrotate(自动轮转、压缩、删除和邮件发送日志文件)
  • 当数组已经排好序,你还在从头遍历?——聊聊 H 指数 II 背后的“算法直觉”
  • ClickHouse:为大数据架构添砖加瓦
  • <span class=“js_title_inner“>《在细雨中呼喊》:当你混到连个找你的人都没有,没人找你吃饭,没人喊你聚会,真该庆祝一下:不是人缘变差了,而是远离了低质量的热闹。</span>
  • 从腾讯离开后,我的“近屿智能”转型记
  • 【游戏推荐】装机模拟器2 全DLC 送修改器(PCBuildingSimulator2)免安装中文版
  • 深度剖析:金融AI风险预警机制的底层架构逻辑——AI应用架构师视角
  • 【踩坑实录】Windows ICS 共享网络下,国产化盒子 SSH 连接异常的完整分析
  • 【游戏推荐】冰汽时代2 全DLC 送修改器(Frostpunk 2)免安装中文版
  • 创建线程 解决跨线程访问UI页面问题
  • Halo与cpolar打造超强组合,让个人博客随时随地能访问
  • 【计算机毕业设计案例】基于SSM的中介房屋管理系统的设计与实现基于ssm的房屋中介公司网站的设计与实现(程序+文档+讲解+定制)
  • 创建任务 处理异步任务顺序问题
  • 学术 PPT 还在 “文字堆 + 乱图表”?虎贲等考 AI 一键生成评审级汇报,答辩 / 课题宣讲直接出彩
  • 【游戏推荐】酒店:度假村模拟(Hotel A Resort Simulator)免安装中文版
  • STM32步进电机4轴控制源码,相对,绝对,回原点,梯形加减 STM32步进电机4轴控制源码...
  • <span class=“js_title_inner“>ITIL4发布计划:90%的运维团队都在“假交付“?</span>
  • 513. 找树左下角的值-day14
  • 问卷设计还在 “凭感觉凑题”?虎贲等考 AI 让 “无效问卷” 变 “数据金矿”,信效度直接达标
  • SSM毕设项目推荐-基于ssm的航班订票系统的设计与实现提供机票预订,飞机票查询时刻表【附源码+文档,调试定制服务】
  • <span class=“js_title_inner“>单菌基因组数据分析 (往期内容) 合集 2026.1.20</span>
  • AT_arc050_b
  • C#编写西门子S7系列PLC上位机通信,ⅤS2017编写,涵盖读写寄存器,中间继电器,外部IO...
  • 19.行为型 - 策略模式(Strategy Pattern)