A - Character Encoding HDU - 6397 - 方程整数解-容斥原理

A - Character Encoding

 HDU - 6397 

思路 :

隔板法就是在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;
}

  

转载于:https://www.cnblogs.com/SDUTNING/p/10261605.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

读书笔记之何时重构(下)

因为中间看了一本其他的书&#xff0c;差不多一个月未跟新读书笔记了&#xff0c;这段时间要补补课&#xff0c;接着上一章继续说说何时重构&#xff0c;文章中很多重构的方法这里还没有说明&#xff0c;后续章节会详细的介绍这些经常使用到的重构方法&#xff0c;尽请期待&…

SQLite和MySQL数据库的区别与应用

简单来说&#xff0c;SQLITE功能简约&#xff0c;小型化&#xff0c;追求最大磁盘效率&#xff1b;MYSQL功能全面&#xff0c;综合化&#xff0c;追求最大并发效率。如果只是单机上用的&#xff0c;数据量不是很大&#xff0c;需要方便移植或者需要频繁读/写磁盘文件的话&#…

第九章 虚拟内存

物理地址和虚拟地址&#xff1a; 计算机的主存被组织成一个由M个连续的字节大小的单元组成的数组。每个字节都有一个唯一的物理地址&#xff08;PA&#xff09;。第一个字节地址为0&#xff0c;接下来为1&#xff0c;再接下来为2&#xff0c;依次类推。CPU访问内存的最自然方式…

Safari browser and asp.net Menu control (asp:Menu)

问题&#xff1a; asp:Menu 在Safari浏览器中显示不正常。 解决方法一&#xff1a;&#xff08;App_Browsers&#xff09; Step1: Add App_Browser Folder in application right click on project add ASP.Net Folder - App_Browsers right click on App_Browsers -- Add new…

CentOS常用到的查看系统命令

# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod…

Android HandlerThread 总结使用

Android HandlerThread 总结使用转载请标明出处&#xff1a;http://www.cnblogs.com/zhaoyanjun/p/6062880.html本文出自【赵彦军的博客】前言以前我在 【Android Handler、Loop 的简单使用】 介绍了子线程和子线程之间的通信。很明显的一点就是&#xff0c;我们要在子线程中调…

[MathType需要安装新版的MT EXtra字体]解决方法

MathType是一款强大的数学公式编辑器&#xff0c;当安装完成&#xff08;或者使用绿色版&#xff09;打开程序时&#xff0c;常常弹出缺少字体的对话框&#xff0c;如下&#xff1a; MathType需要一个新版的MT Extra&#xff08;TrueType&#xff09;字体。请重新安装MathType&…

Microsoft Lync

转载于:https://blog.51cto.com/dynamicit/874659

python 文件操作练习

1. 文件a.txt内容&#xff1a;每一行内容分别为商品名字&#xff0c;价钱&#xff0c;个数。 apple 10 3 tesla 100000 1 mac 3000 2 lenovo 30000 3 chicken 10 3 通过代码&#xff0c;将其构建成这种数据类型&#xff1a;[{name:apple,price:10,amount:3},{name:tesla,price:…

超级简单的数学题

超级简单的数学题有5人坐在一起&#xff0c;当问第5个人多少岁,他说比第4个人大2岁&#xff0c;问第4个人多少岁,他说比第3个人大2岁&#xff0c;依此下去&#xff0c;问第一个人多少岁&#xff0c;他说他10岁&#xff0c;最后求第5个人多少岁如果所坐的不是5人而是n人&#xf…

Linux下共享内存的查看和释放

说明&#xff1a;1、查看共享内存&#xff0c;使用命令&#xff1a;ipcs -m2、删除共享内存&#xff0c;使用命令&#xff1a;ipcrm -m [shmid]使用如下&#xff1a;[plain] view plaincopy[negivupnegivup mycode]$ ipcs -m 查看共享内存区 ------…

微软发布Enterprise Library 4.1和Unity 1.2

说明 微软模式与实践团队今天发布了Enterprise Library 4.1和Unity 1.2版本&#xff0c;这次发布的主要新特性如下&#xff1a; 1. 支持Visual Studio 2008 SP1 2. Unity应用程序块中加入了拦截机制 3. 性能提升 4. 配置工具的可用性提升 5. Bugs修复。 在Unity 1.2中有如下几点…

简易的波形折叠电路

01 波形折叠一、背景介绍今天在 Youtube 上看到 UP 主 Neukolln 展示了一款非常简单波形折叠电路。那么什么是波形折叠电路&#xff1f;它有什么用处&#xff1f;1、什么是波形折叠&#xff1f;通常情况下&#xff0c;信号在放大中会产生“饱和失真”&#xff0c;这是由于放大器…

STL 容器和迭代器连载6_顺序容器的操作3

2019独角兽企业重金招聘Python工程师标准>>> /*- * 文件名 &#xff1a;STL_con_ite_6.cpp * 开发人员&#xff1a;袁培荣 * 当前版本&#xff1a;1.0.0.2595 * 创建时间&#xff1a;2012-05-24 * 修改时间&#xff1a;2012-05-24 * 功能…

hive三种调用方式

一、hive -e ‘sql语句’ &#xff08;shell命令&#xff09; 适合比较短的sql语句调用&#xff0c;优点是可以直接在shell中调用静音模式 -S 在执行HiveQL过程中&#xff0c;不在显示器输出MR的执行过程hive -S -e ‘sql语句’ > test.txt 将执行结果直接输入到本地文件 二…

vector的内存释放

1. vector容器的内存自增长 与其他容器不同&#xff0c;其内存空间只会增长&#xff0c;不会减小。先来看看"C Primer"中怎么说&#xff1a;为了支持快速的随机访问&#xff0c;vector容器的元素以连续方式存放&#xff0c;每一个元素都紧挨着前一个元素存储。设想一…

从程序语言排行榜来解读IT及Web的发展

预测行业的发展不能是凭空预测&#xff0c;而需要有根据。因为预测本身就是个不太准的事情&#xff0c;再没根据的话&#xff0c;那就更是浮云了。下面&#xff0c;我尝试从程序语言排行榜来解读一下IT的发展方向及Web的未来。《2012年4月份编程语言排行榜》全文见 http://news…

QT - 内存泄漏检测

一、安装vld-2.5.1-setup.exe 下载地址&#xff1a;https://archive.codeplex.com/?pvld 二、pro中添加头文件目录与库目录 INCLUDEPATH "C:\\Program Files (x86)\\Visual Leak Detector\\include"LIBS "C:\\Program Files (x86)\\Visual Leak Detector\\li…

C和C++混合编程(__cplusplus 与 external c 的使用)

第一种理解比如说你用C开发了一个DLL库&#xff0c;为了能够让C语言也能够调用你的DLL输出(Export)的函数&#xff0c;你需要用extern "C"来强制编译器不要修改你的 函数名。 通常&#xff0c;在C语言的头文件中经常可以看到类似下面这种形式的代码&#xff1a; #ifd…

Eclipse开发Android程序如何在手机上运行

http://www.cnblogs.com/plwang1990/archive/2011/07/04/2097757.htm android开发不论是在真机上调试还是最终发布到真机上都非常简单&#xff0c;过程如下&#xff1a; 1、安装usb驱动 手机要能与电脑相连&#xff0c;当然要安驱动了。效果就是你插入手机&#xff0c;电脑显示…