A - Character Encoding HDU - 6397 - 方程整数解-容斥原理
A - Character Encoding
思路 :
隔板法就是在n个元素间的(n-1)个空中插入k-1个板,可以把n个元素分成k组的方法
普通隔板法
求方程 x+y+z=10的正整数解的个数。
添元素隔板法
求方程 x+y+z=10的非负整数解的个数。 那么 增加 3 即转化为 了普通隔板法
但是这个题呢 还有 < N 的限制 ,那么就需要去除掉 ,分出的块中 有 > = n 的情况 。
就会 有 一块 出现 > =n ,两块 > =n 等等。。 具体 需要根据总数来确定 ,要去除这些情况贡献的解
发现 如果 有某一块 > = n 那么就转化为了 先把n个 放到 某一块上 ,剩下的 总数 - n 再 进行 分为 m块的 分配,
计算式即为 。 某一块 * (剩下的 分到 m块上) 但是这样会多减去一些,因为 这些情况中包含了
有 两块 > = n 三块 > =n 等等 。所以 需要 加回来 两块的情况,
#include<bits/stdc++.h>
using namespace std;
#define maxn 234567
#define ll long long
#define mod 998244353
ll n,m,k,inv[maxn+10],A[maxn+10],ans,t;
ll qpow(ll a,ll b)
{
ll re=1;
while(b)
{
if(b%2)
re=(re*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return re;
}
void init()
{
A[0]=inv[0]=1;
for(int i=1; i<=maxn; i++)
{
A[i]=(A[i-1]*i)%mod;
inv[i]=qpow(A[i],mod-2)%mod;
}
}
ll C(ll a,ll b)
{
if(b<a)return 0;
return (A[b]*inv[a]%mod*inv[b-a])%mod;
}
int main()
{
init();
scanf("%lld",&t);
while(t--)
{
ans=0;
scanf("%lld%lld%lld",&n,&m,&k);
if(k==0)printf("1\n");
else if(k>m*(n-1))printf("0\n");
else if(k<n) printf("%lld\n",C(m-1,m+k-1));
else
{
ll x=-1;
ans=C(m-1,m+k-1);
for(int i=1; i<=m; i++)
{
ans=(ans+C(i,m)*x%mod*C(m-1,k+m-1-i*n)%mod+mod)%mod;
x*=-1;
}
printf("%lld\n",ans);
}
}
return 0;
}
A - Character Encoding HDU - 6397 - 方程整数解-容斥原理的更多相关文章
- hdu6397 Character Encoding 隔板法+容斥原理+线性逆元方程
题目传送门 题意:给出n,m,k,用m个0到n-1的数字凑出k,问方案数,mod一个值. 题目思路: 首先如果去掉数字范围的限制,那么就是隔板法,先复习一下隔板法. ①k个相同的小球放入m个不同的盒子 ...
- hdu 6397 Character Encoding (生成函数)
Problem Description In computer science, a character is a letter, a digit, a punctuation mark or som ...
- 使用英文版eclipse保存代码,出现some characters cannot be mapped using "Cp1251" character encoding.
some characters cannot be mapped using "Cp1251" character encoding. 解决办法:方案一: eclipse-> ...
- Character Encoding tomcat.
default character encoding of the request or response body: If a character encoding is not specified ...
- Character Encoding in .NET
https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-encoding#Encodings Characters ...
- 方程整数解-2015省赛C语言A组第一题
方程整数解 方程: a^2 + b^2 + c^2 = 1000(或参见[图1.jpg])这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解.你能算出另一组合适的解吗? 请填写该解中最小的数 ...
- java.sql.SQLException: Unsupported character encoding 'utf8mb4'.
四月 12, 2017 3:47:52 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() fo ...
- some characters cannot be mapped using iso-8859-1 character encoding
Eclipse中新建一个.properties文件,如果输入中文保存时就会提示错误 Reason:some characters cannot be mapped using "ISO-88 ...
- HDU 6397 组合数学+容斥 母函数
Character Encoding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Oth ...
随机推荐
- python网络爬虫笔记(八)
一.pthon 序列化json格式 1.将python内置对象转换成json 模块,dumps()方法返回的是一个str,内容是标准的JSON,dump()方法可以直接吧JSON写入一个file-li ...
- truncate table时存在外键约束的解决办法
以前在使用truncate命令时遇到表存在外键引用时无法执行命令的情况都是用delete来代替,今天又遇到这个问题,于是在网上搜了一把,可以通过如下方式解决: 1.基本思路:先关闭mysql的外键约束 ...
- 向github上提交自己的project
参考博客:https://blog.csdn.net/m0_37725003/article/details/80904824 step I: 创建自己的github账户(username:fourm ...
- 【转】asp.net Core 系列【二】—— 使用 ASP.NET Core 和 VS2017 for Windows 创建 Web API
在本教程中,将生成用于管理“待办事项”列表的 Web API. 不会生成 UI. 概述 以下是将创建的 API: API 描述 请求正文 响应正文 GET /api/todo 获取所有待办事项 无 待 ...
- IDEA中tomcat的部署
创建一个项目就要部署tomcat
- android开发默认图标怎么换?
首先要在资源文件放入想换的图标图片拖到drawable-XX文件夹下, 然后打开AndroidManifest.xml这个配置清单文件找 到application标签里的这句android:icon= ...
- SQL Server Profiler的简单使用
SQL Server Profiler可以检测在数据上执行的语句,特别是有的项目不直接使用sql语句,直接使用ORM框架的系统处理数据库的项目,在调试sql语句时,给了很大的帮助. 之前写了使用SQL ...
- .NetCore 下开发独立的(RPL)含有界面的组件包 (五)授权过滤参数处理
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...
- 源码编译安装net-snmp
https://blog.csdn.net/u013992330/article/details/79712405 https://wenku.baidu.com/view/24368a2257125 ...
- rabbitmq更换数据文件和日志文件的存放位置
原来的默认位置是/var下 需要将这些文件更换位置 1.先创建数据文件和日志文件存放位置的目录并给权限 mkdir -p /usr/local/rabbitmq/mnesia mkdir -p /us ...