[JZOJ 5813] 计算
题意:求满足题意的方案数。
思路:
显然的计数类\(dp\)。
不难发现,令$f(x) = \prod_{i=1}^{2m}{x_i} \(.
在找一个\)x'\(使得\)f(x') = \prod_{i=1}^{2m}{n/x_i}\(
那么,\)f(x') = n^{2m}/f(x) > n^m\(
所以说,对于\)<\(和\)>\(的方案数相同,关键是求出\)=\(.
求\)=\(就是求有多少\)f(x) = n^m\(
将n分解质因数,考虑\)a_j\(表示\)x_j\(中包含\)p\(的指数,令\)cnt\(表示\)n\(中含有\)p\(的指数。
所以就是求\)\sum_{i=1}^{2m}a_j = cnt * m\(且\)a_j > 0\(的方案数。
所以记\)dp[i][j]\(表示前\)i\(个数和为\)j\(的方案数。
所以\)dp[i][j] = \sum_{k=0}^{cnt}dp[i - 1][j - k]\(
复杂度\)O(\sqrt{n} + logn*m^2)$
奇怪的复杂度。。。
不过...关键字坑了我一年...
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 210;
#define mod 998244353
ll tmp;
ll s;
ll n,m;
ll dp[maxn][maxn*(maxn>>3)];
inline int read (){
int q=0,f=1;char ch = getchar();
while(!isdigit(ch)) {
if(ch=='-')f=-1;ch=getchar();
}
while(isdigit(ch)){
q=q*10+ch-'0';ch=getchar();
}
return q*f;
}
inline ll pow_mod(ll x,ll y) {
ll res = 1;
while(y) {
if(y & 1) res = res * x % mod;
x = x * x % mod;
y >>= 1;
}
return res;
}
inline void upd(ll &x,ll y) {
x = (x + y) % mod;
}
inline void Upd(ll &x,ll y) {
x = (x * y) % mod;
}
inline void Dp(int x) {
int cnt = 0;
while(tmp % x == 0) cnt ++,tmp /= x;
memset(dp,0,sizeof(dp));
dp[0][0] = 1;
for(int i = 1;i <= (m << 1); ++i) {
for(int j = 0;j <= cnt * m; ++j) {
for(int k = 0;k <= min(j,cnt); ++k) {
upd(dp[i][j],dp[i - 1][j - k]);
}
}
}
Upd(s,dp[m << 1][cnt * m]);
}
int sum;
int main () {
freopen("count.in","r",stdin);
freopen("count.out","w",stdout);
scanf("%lld %lld",&n,&m);
int tid = sqrt(n);
tmp = n;
s = 1;
for(int i = 1;i <= tid; ++i) {
if(n % i == 0) {
sum += 1 + (i * i < n);
if(i > 1 && tmp % i == 0) {
Dp(i);
}
}
}
if(tmp > 1) {
Dp(tmp);
}
sum = pow_mod(sum,m << 1);
printf("%lld",(sum + s) * pow_mod(2,mod - 2) % mod);
return 0;
}
//1 0 1 1 1 2 1 0 1 1 1 2
[JZOJ 5813] 计算的更多相关文章
- [jzoj]2505.【NOIP2011模拟7.29】藤原妹红
Link https://jzoj.net/senior/#main/show/2505 Description 在幻想乡,藤原妹红是拥有不老不死能力的人类.虽然不喜欢与人们交流,妹红仍然保护着误入迷 ...
- [jzoj]3875.【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)
Link https://jzoj.net/senior/#main/show/3875 Problem 在遥远的S星系中一共有N个星球,编号为1…N.其中的一些星球决定组成联盟,以方便相互间的交流. ...
- [jzoj]5257.小X的佛光
Link https://jzoj.net/senior/#main/show/5257 Problem Solution 5~90分 我们可以根据特殊性质搞 如果数据小,直接暴力在树上面模拟一次 如 ...
- [jzoj]1417.数学题
Link https://jzoj.net/senior/#main/show/1417 Problem 当Alice在浏览数学书时,看到一个等式A=S,奇怪的是A和S并不相等.Alice发现可以通过 ...
- MATLAB线性回归方程与非线性回归方程的相关计算
每次比赛都需要查一下,这次直接总结到自己的博客中. 以这个为例子: 2.线性方程的相关计算 x=[1,2,3,4,5]';%参数矩阵 X=[ones(5,1),x];%产生一个5行一列的矩阵,后接x矩 ...
- JZOJ 5919. 逛公园
Description 琥珀色黄昏像糖在很美的远方,思念跟影子在傍晚一起被拉长……Description 小 B 带着 GF 去逛公园,公园一共有 n 个景点,标号为 ...
- [jzoj 6080] [GDOI2019模拟2019.3.23] IOer 解题报告 (数学构造)
题目链接: https://jzoj.net/senior/#main/show/6080 题目: 题意: 给定$n,m,u,v$ 设$t_i=ui+v$ 求$\sum_{k_1+k_2+...+k_ ...
- [jzoj 6087] [GDOI2019模拟2019.3.26] 获取名额 解题报告 (泰勒展开+RMQ+精度)
题目链接: https://jzoj.net/senior/#main/show/6087 题目: 题解: 只需要统计$\prod_{i=l}^r (1-\frac{a_i}{x})$ =$exp(\ ...
- [jzoj 6084] [GDOI2019模拟2019.3.25] 礼物 [luogu 4916] 魔力环 解题报告(莫比乌斯反演+生成函数)
题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 注: ...
随机推荐
- ECMAScript 6学习总结
学习ECMAScript 6 一.什么是ES6 ECMAScript6是ECMAScript的升级,实现用来编写复杂程序项目. 二.ECMAScript和JavaScript的关系 JavaScrip ...
- Shiro学习(23)多项目集中权限管理
在做一些企业内部项目时或一些互联网后台时:可能会涉及到集中权限管理,统一进行多项目的权限管理:另外也需要统一的会话管理,即实现单点身份认证和授权控制. 学习本章之前,请务必先学习<第十章 会话管 ...
- Android中的ListView的绘制过程中执行的方法
首先,系统在绘制ListView之前, 将会先调用getCount方法来获取Item的个数.(如果getCount方法返回0的话,列表时不显示任何内容的) 之后每绘制一个 Item就会调用一次getV ...
- python对具有宏excel的操作
一.使用win32com库 安装pip install pypiwin32 import win32com.client #excel xlApp =win32com.client.DispatchE ...
- HTML-参考手册: HTTP 方法:GET 对比 POST
ylbtech-HTML-参考手册: HTTP 方法:GET 对比 POST 1.返回顶部 1. HTTP 方法:GET 对比 POST 两种最常用的 HTTP 方法是:GET 和 POST. 什么是 ...
- 2、Appium Desktop 使用介绍
1.appium运行界面介绍 默认显示监控的 host 和 port , 这和 Appium-Server 中是一致的. 2.点击 “Start Server V 1.7.2” 按钮启动服务,出现如 ...
- 面向对象(四)——classmethod、staticmethod装饰器(绑定方法与非绑定方法)
classmethod.staticmethod装饰器 一.绑定方法与非绑定方法 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): (1) 绑定到类的方法:用classmethod ...
- BigDecimal.divide方法
java.math.BigDecimal.divide(BigDecimal divisor, int roundingMode) 返回一个BigDecimal,其值为(this/除数),其标度是th ...
- python面试题之多线程好吗?列举一些让Python代码以并行方式运行的方法
答案 Python并不支持真正意义上的多线程.Python中提供了多线程包,但是如果你想通过多线程提高代码的速度,使用多线程包并不是个好主意.Python中有一个被称为Global Interpret ...
- 3-vim-打开和新建文件-02-删除交换文件
vim的异常处理 如果vim异常退出,在磁盘上可能会保存有交换文件. 若使用vi编辑该文件时看到如下图信息,按下字母d就可以删除交换文件. 注意:输入命令操作的时候关闭输入法.