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 ...
随机推荐
- LeetCode(115):不同的子序列
Hard! 题目描述: 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字 ...
- python unittest套件,修改为失败重新执行
#套件,修改为失败重新执行 import time import unittest from unittest.suite import _isnotsuite class Suit(unittest ...
- 使用sysbench 0.5 对mysql 进行性能、压力测试
sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.目前sysbench代码托管在launchpad上,项目地址:https://launc ...
- spring cloud 容错之zuul回退和Zuul过滤器
一.容错:Zuul回退 如果微服务下线了,针对每个微服务,都需要回复一个中文提示,而不是报异常 1.新建ConsumerFallbackProvider.java package com.pupeiy ...
- springboot多环境(dev、test、prod)配置
propertiest配置格式在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如: ...
- tomcat和server安装和操作
servers的创建 最后一步:ctrl+s
- python文件的分类
# 0.获取所有的文件名称列表import os import shutilos.chdir("files")file_list = os.listdir("./&quo ...
- Asp.NetCore 读取配置文件帮助类
/// <summary> /// 读取配置文件信息 /// </summary> public class ConfigExtensions { public static ...
- mongodb 安装时错误
1.安装MongoDB进度条长时间不动 根据在网上搜的步骤安装mongoDB到这步,就基本上卡死不动,在网上查到的办法是死等,等了半个小时,但运气不好半个小时也不一定安装成功. 如果进行到这步,卡死在 ...
- 关于The specified Android SDK Build Tools version (26.0.2) is ignored, as it is below the minimum...
今天将项目迁移到另一台笔记本,进行build出现以下问题,导致build失败 The specified Android SDK Build Tools version (26.0.2) is ign ...