jzoj 6301. 普及组
Description
详见OJ
Solution
感觉这题是最神仙的。。。
考场\(AC\)的人说自己是暴力枚举转移方程而得到了一个正确的转移式。
对于数据中的\(x\),我们发现分解质因数后,每个质因数的指数最大是\(2\)。
当指数为\(1\)的时候,很容易得出答案乘以\(n!\)(因为每列每行都只能有一个这个质数)
当指数为\(2\)的时候,那人通过暴枚得出\(f[i]=i*i*f[i-1]+i*(i-1)*(i-1)/2*f[i-2]\),答案乘以\(f[n]\)。
最后再乘以\(2^{(n-1)*(n-1)}\)即可。
Code
#include <cstdio>
#define N 5000000
#define ll long long
#define mo 998244353
#define mem(x, a) memset(x, a, sizeof x)
#define fo(x, a, b) for (int x = a; x <= b; x++)
#define fd(x, a, b) for (int x = a; x >= b; x--)
using namespace std;
int T, n, cs[31][2], tot = 0;
ll x, f[N + 10], jc[N + 10], tot1 = 0, tot2 = 0;inline int read()
{int x = 0; char c = getchar();while (c < '0' || c > '9') c = getchar();while (c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();return x;
}ll ksm(ll x, int y)
{ll s = 1;while (y){if (y & 1) s = s * x % mo;x = x * x % mo; y >>= 1;}return s;
}int main()
{freopen("pj.in", "r", stdin);freopen("pj.out", "w", stdout);scanf("%lld", &x);fo(i, 2, 3000)if (x % i == 0){
// cs[++tot][0] = i;tot = 0;while (x % i == 0)x /= i, tot++;if (tot == 1) tot1++;else tot2++;}if (x > 1) tot1++;f[1] = 1, f[2] = 3; jc[1] = 1, jc[2] = 2;for (ll i = 3; i <= N; i++){f[i] = (i * i % mo * f[i - 1] % mo - i * (i - 1) / 2 % mo * (i - 1) % mo * f[i - 2] % mo + mo) % mo;jc[i] = jc[i - 1] * i % mo;}T = read();while (T--){n = read();printf("%d\n", ksm(jc[n], tot1) * ksm(f[n], tot2) % mo * ksm(2, (ll)(n - 1) * (n - 1) % (mo - 1)) % mo);}return 0;
}
转载于:https://www.cnblogs.com/jz929/p/11348962.html
jzoj 6301. 普及组相关推荐
- JZOJ(中山纪念中学) 2018.02.02【NOIP普及组】模拟赛D组
本次题目:2018.02.02[NOIP普及组]模拟赛D组 第一题 题目:第一题 公牛数字 题意: 求题目给出两个数字的乘积 分析: 这题明显只是考察学生的高精可我居然没做对,只要多练习几次,即可AC ...
- NOIP2005普及组第4题 循环
NOIP2005普及组第4题 循环 时间限制: 1 Sec 内存限制: 128 MB 提交: 27 解决: 6 [提交][状态][讨论版][命题人:外部导入] 题目描述 乐乐是一个聪明而又勤奋好学 ...
- NOIP2013普及组 T2 表达式求值
OJ地址:洛谷P1981 CODEVS 3292 正常写法是用栈 1 #include<iostream> 2 #include<algorithm> 3 #include&l ...
- 牛客网NOIP赛前集训营-普及组(第一场)
前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现 ...
- 计算机方面特长特招进北大,成为科技特长生并不难,CSP普及组三等奖就可以
每一步,与世界同步 5月18日,人大附中发布<2021年高中入学科技特长生招生简章>. 在这份<招生简章>中,值得注意的有4点: 科技特长生增加了40%的名额: 招生范围从海淀 ...
- noi2017初赛c语言试题,NOIP2017普及组初赛试题及答案
原标题:NOIP2017普及组初赛试题及答案 清北学堂信息学金牌教研团今天为学生们整理了NOIP2017普及组初赛试题及答案,供学生们参考哦! --此文2100多文字,大概需要60分钟看完 一.单项选 ...
- NOIP普及组第1题(1995-2018)
NOIP1995普及组复赛第1题 https://blog.csdn.net/secret_zz/article/details/76862335 https://blog.csdn.net/WDAJ ...
- 【codevs 1315】1315 摆花2012年NOIP全国联赛普及组(dp)
1315 摆花2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明的花店新开张,为 ...
- NOIP2012普及组 (四年后的)解题报告 -SilverN
本章施工仍未完成 现在的时间是3.17 0:28,我困得要死 本来今天(昨天?)晚上的计划是把整个四道题的题解写出来,但是到现在还没写完T4的高效算法,简直悲伤. 尝试了用floyd写T4,终于大功告 ...
- [NOIP 2011普及组 No.4] 表达式的值
[NOIP 2011普及组 No.4] 表达式的值 [问题描述] 对于1 位二进制变量定义两种运算: 运算的优先级是: 1. 先计算括号内的,再计算括号外的. 2. "×"运算优先 ...
最新文章
- 第十一届山东省大学生程序设计竞赛(热身赛)Mika with Cherry Cake
- MacBook Air 使用技巧
- VTK:直线网格之RGrid
- 使用 Node.js Express 的最佳实践
- ur机械臂 控制器_OnRobot末端执行器和统一接口已通过UR +计划认证
- 170329、用 Maven 部署 war 包到远程 Tomcat 服务器
- HDU 4548 美素数(打表)
- Kubernetes架构及相关服务详解
- shell脚本实现printf数字转换N位补零
- vue 第十天 (组件的基本使用)
- Dreamweaver/Flash CS4安装后打开时提示此产品的许可已停止工作
- 机器学习之PCA算法的人脸图像识别-平均脸的计算(详细操作步骤)
- vue使用 axios 跨域
- 洗地扫地机一体机好用吗、洗扫一体洗地机选购必看
- html图片滚动首尾互联,网页中多个图片首尾相接来回滚动
- pandas 之 pivot_table 与 pivot 的区别
- CloudComparePCL Ear Clipping三角化算法
- Windows CMD命令行进行日期计算及本件备份
- c++中函数屏蔽和函数参数屏蔽
- 安装xshell和Xftp时出现致命错误:-1603的解决方法
热门文章
- 一个简单的任务处理队列
- 6.MongoDB之索引
- transform与rigibody以及角色控制器的运动
- java: 非法字符: ‘\ufeff‘、java: 需要class, interface或enum
- 接口参数使用RequestBody和RequestParam注解的场景
- jenkins使用插件OWASP Dependency-Check Plugin对jar包漏洞扫描
- python字典变量定义_Python字典,函数,全局变量代码解析
- [渝粤教育] 中国地质大学 材料力学 复习题
- Docker系列(三)容器的基本操作
- TCP/IP,三次握手四次挥手,TCP/UDP , HTTP/HTTPS