[noi239]count
将每一个ai表示为$ai=ki\cdot m+ri$,即满足$m\sum ki+\sum ri=n$且$0<ri<m$
枚举$S=\sum ri$(S范围是$k\le S\le k(m-1)$且与n同余,只有k个值),之后相当于让$\sum ki=(n-S)/m$,根据插板法以$o(k)$(c的定义)计算
还要计算出$\sum ri=S$的方案数,设f(i)表示有i个j满足$m\le rj$,其余无限制的方案数,那么答案就是$\sum_{i=0}^{k}(-1)^k\cdot f(k)$
f(i)的计算很简单,先是从k个数中选取i个,即c(k,i);再将不满足的rj都减去m-1,即有n个数的和为$S-(m-1)i$的方案数,也用插板法,但可以o(1)计算(预处理阶乘即逆元)

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define mod 998244353
4 #define ll long long
5 #define N 25000005
6 int m,k,ans,fac[N],inv[N];
7 ll n;
8 int c1(ll n,int m){
9 int ans=1;
10 for(int i=0;i<m;i++)ans=1LL*(n-i)%mod*ans%mod;
11 return 1LL*ans*inv[m]%mod;
12 }
13 int c2(int n,int m){
14 if (n<m)return 0;
15 return 1LL*fac[n]*inv[m]%mod*inv[n-m]%mod;
16 }
17 int f(int n){
18 int p=-1,ans=0;
19 for(int i=0;i<=k;i++){
20 p*=-1;
21 ans=(ans+1LL*p*c2(k,i)*c2(n-(m-1)*i-1,k-1)%mod+mod)%mod;
22 }
23 return ans;
24 }
25 int main(){
26 scanf("%lld%d%d",&n,&m,&k);
27 fac[0]=inv[0]=inv[1]=1;
28 for(int i=1;i<=k*m;i++)fac[i]=1LL*fac[i-1]*i%mod;
29 for(int i=2;i<=k*m;i++)inv[i]=1LL*(mod-mod/i)*inv[mod%i]%mod;
30 for(int i=1;i<=k*m;i++)inv[i]=1LL*inv[i-1]*inv[i]%mod;
31 for(int i=0;i<k;i++){
32 int j=i*m+n%m;
33 if ((j<k)||(k*(m-1)<j))continue;
34 ans=(ans+1LL*c1((n-j)/m+k-1,k-1)*f(j))%mod;
35 }
36 printf("%d",ans);
37 }
[noi239]count的更多相关文章
- nodejs api 中文文档
文档首页 英文版文档 本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可. Node.js v0.10.18 手册 & 文档 索引 | 在单一页面中浏览 | JSON格 ...
- C#中Length和Count的区别(个人观点)
这篇文章将会很短...短到比你的JJ还短,当然开玩笑了.网上有说过Length和count的区别,都是很含糊的,我没有发现有 文章说得比较透彻的,所以,虽然这篇文章很短,我还是希望能留在首页,听听大家 ...
- [PHP源码阅读]count函数
在PHP编程中,在遍历数组的时候经常需要先计算数组的长度作为循环结束的判断条件,而在PHP里面对数组的操作是很频繁的,因此count也算是一个常用函数,下面研究一下count函数的具体实现. 我在gi ...
- EntityFramework.Extended 实现 update count+=1
在使用 EF 的时候,EntityFramework.Extended 的作用:使IQueryable<T>转换为update table set ...,这样使我们在修改实体对象的时候, ...
- 学习笔记 MYSQL报错注入(count()、rand()、group by)
首先看下常见的攻击载荷,如下: select count(*),(floor(rand(0)*2))x from table group by x; 然后对于攻击载荷进行解释, floor(rand( ...
- count(*) 与count (字段名)的区别
count(*) 查出来的是:结果集的总条数 count(字段名) 查出来的是: 结果集中'字段名'不为空的记录的总条数
- BZOJ 2588: Spoj 10628. Count on a tree [树上主席树]
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MBSubmit: 5217 Solved: 1233 ...
- [LeetCode] Count Numbers with Unique Digits 计算各位不相同的数字个数
Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n. Examp ...
- [LeetCode] Count of Range Sum 区间和计数
Given an integer array nums, return the number of range sums that lie in [lower, upper] inclusive.Ra ...
随机推荐
- .Net Core 获取上下文HttpContext
1.先定义一个类 using Microsoft.AspNetCore.Http; namespace BCode.Util { public class MvcContext { public st ...
- ThreadLocal概念以及使用场景
ThreadLocal概念以及使用场景 根据自身的知识深度,这里只限于自己使用和学习的知识点整理,原理的解释还需要再沉淀. 该文章从项目开发中举例,希望能帮助到各位,不了解ThreadLocal的朋友 ...
- BG的本性
BG的本性 更舒适的体验 算法一: 我还会暴力!模拟一下 复杂度 \(O(nm)\), 期望得分10 算法二: 用线段树优化枚举,直接找可行点 复杂度 \(O(\mathrm{ans} \log_2 ...
- .Net微信服务商平台ApiV3接口
最近做个对接微信服务商平台的小程序项目,大概要实现的流程是:a)特约商户进件 > b)生成带参数的小程序码 > c)小程序支付 > d)分账,记录一下,希望能对需要的朋友有所帮助 开 ...
- SyntaxError: Non-UTF-8 code starting with '\xbb' in file D:\流畅学python\ex32.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
1. 报错如下: SyntaxError: Non-UTF-8 code starting with '\xd3' in file D:\流畅学python\ex34.py on line 4, bu ...
- 保护模式篇——TLB与CPU缓存
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- django-admin和django-admin.py的区别
问题 django初学者在使用django-admin创建项目时容易出现无法创建的错误,这是因为网上很多教程用的都是django-admin.py创建的项目,不出意外的话,你输入相同的命令会发现项目没 ...
- Noip模拟72 2021.10.9
T1 出了个大阴间题 真就以为他出了个大阴间题就没写,打个暴力就跑了 数据范围显然摆明是状压 设$f[sta][0/1]$表示在已经选择的集合$sta$中,$A$的最大值是$A$还是$A+1$ 然后按 ...
- 2021.8.17考试总结[NOIP42]
$\huge{取模不能比大小!}$ $\huge{取模不能比大小!}$ $\huge{取模不能比大小!}$ 有了打地鼠的前车之鉴,我深信树规板子是可以出现在联赛题里的. 所以T1十分钟码完直接溜了,后 ...
- Balance的数学思想构造辅助函数
本类题的证明难点便在于如何构造出满足答案的辅助函数.通过下列类题便可以很好的理解. 题一 该类题可以理解为积分内部f(x)与xf(x)处于一种失衡状态,故我们需要使其平衡,否则直接构造出的函数无法满足 ...