求逆元 - HNU 13412 Cookie Counter
Cookie Counter
Problem's Link: http://acm.hnu.cn/online/?action=problem&type=show&id=13412&courseid=0
Mean:
将N分为D份,每份不超过X,有多少种分法?
analyse:
首先我们想到的是迭代,但是数据太大,一路迭代下去必定爆栈+超内存+TLE。
我们枚举X,对于满足条件的X,求和统计答案,不满足条件的X,更新往下迭代的P值。最后对P求和即为答案。
这题DP也可以做,不过上面的方法从时间和空间上都大大优于DP。
Time complexity: O(N)
Source code:
* this code is made by crazyacking
* Verdict: Accepted
* Submission Date: 2015-08-16-16.39
* Time: 0MS
* Memory: 137KB
*/
#include <queue>
#include <cstdio>
#include <set>
#include <string>
#include <stack>
#include <cmath>
#include <climits>
#include <map>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#define LL long long
#define ULL unsigned long long
using namespace std;
const LL mod = 1000000007;
LL inv[5000];
LL N,X,D;
void pre()
{
inv[1] = 1;
for(int i=2; i<5000; i++)
inv[i] = (mod - mod / i) * inv[mod % i] % mod;
}
int main()
{
pre();
while(scanf("%d %lld %d",&N,&D,&X) && N)
{
LL ans = 0;
for(int i=0; i*X<=N; i++)
{
LL p = 1;
if(i <= D)
{
for(int j=1; j<=i; j++)
{
p = (D - j + 1) % mod * p % mod;
p = p * inv[j] % mod;
}
}
else p = 0;
for(int j=0; j<i; j++) p = (mod - p);
int gap = N - i*X;
for(int j=1; j<=gap; j++)
{
p = (D + gap - j + mod) % mod * p % mod;
p = p * inv[j] % mod;
}
ans = ans + p;
if(ans >= mod)
ans -= mod;
}
printf("%lld\n",ans);
}
return 0;
}
求逆元 - HNU 13412 Cookie Counter相关推荐
- BZOJ 3456: 城市规划 [多项式求逆元 DP]
题意: 求出n个点的简单(无重边无自环)无向连通图数目. 方案数mod 1004535809(479 * 2 ^ 21 + 1)即可. n<=130000 DP求方案 g(n) n个点所有图的方 ...
- 线性求逆元模板_ACM 数论基本模板
ACM 数论基本模板 1.欧几里得 求最大公约数,最小公倍数 (1)递归的写法:int gcd(int a,int b) {return b?gcd(b,a%b):a;} (2)辗转相除法: int ...
- 求逆元(线性求逆元)及其扩展欧几里得
线性求逆元模板: int inv[maxn]; void initInverse(){inv[1] = 1;for(int i = 2; i <= maxn; i++)inv[i] = (p - ...
- 拓展欧几里得模板/求逆元模板(java)
拓展欧几里得模板 参考:哈尔滨理工大学ACM培训资料汇编/ACM-ICPC培训资料汇编* 基本原理 :设 a 和 b 不全为 0,则存在整数 x,y 使得 xa yb=gcd(a,b)=c 对于辗转相 ...
- nyoj-Color the necklace(Ploya定理 + 欧拉函数 + 扩展欧几里得(求逆元))
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=688 此题题解 不太懂,因为对这些概念,定理太模糊,理解起来比较困难,不过想想还是应该把代 ...
- 【BZOJ-4522】密钥破解 数论 + 模拟 ( Pollard_Rho分解 + Exgcd求逆元 + 快速幂 + 快速乘)...
4522: [Cqoi2016]密钥破解 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 290 Solved: 148 [Submit][Stat ...
- 51nod 1118 机器人走方格 解题思路:动态规划 1119 机器人走方格 V2 解题思路:根据杨辉三角转化问题为组合数和求逆元问题
51nod 1118 机器人走方格: 思路:这是一道简单题,很容易就看出用动态规划扫一遍就可以得到结果, 时间复杂度O(m*n).运算量1000*1000 = 1000000,很明显不会超时. 递推式 ...
- “景驰科技杯”2018年华南理工大学程序设计竞赛 H-对称与反对称(扩展欧几里得求逆元)
题目链接 题目描述: 给出一个N*N的方阵A.构造方阵B,C: 使得A = B + C.其中 B为对称矩阵,C为反对称矩阵. 对于方阵S中的任意元素,若(S)ij = (S)ji,则称S为对称矩阵 对 ...
- 礼物(中国剩余定理+拓展gcd求逆元+分治=拓展Lucus)
礼物 题意: 求\[C(n,m)\ \%\ p\] \(n,m,p\le 10^9\),且若\(p=\prod_{i=1}^{k}{p_i}^{c_i}\),则\(\forall i\in [1..k ...
最新文章
- 共轭梯度下降法matlab,用matlab实现最速下降法,牛顿法和共轭梯度法求解实例
- TS和JS相对比的优势
- Java学习笔记-网络编程
- 《2012》:让灾难成为一场洗礼
- WTM系列视频教程:CodeFirst
- java 调用 rsync_运行rsync时,QProcess不显示任何输出
- oledb连接服务器的文件,请教OLEDB链接和ODBC链接连接的不同和对系统的要求...
- 重磅进展,Intel已能够生产量子芯片硅晶圆
- tensorflow中的py_function与watch
- 【系统集成项目管理工程师】—计算真题公式汇总及分析
- 使用T-SQL语句创建数据库
- ASP.NET 获取IP信息等探针
- the JDBC Driver has been forcibly unregistered
- 使用000webhost.com免费主机搭建一个WordPress站点
- 我用php构建了魔兽世界服务器,只为证明php是世界上最好的语言
- 自动化测试应用---HTML测试报告+邮件发送
- QueryPerformanceCounter实现Windows微秒级延时
- 计算机编程课程顺序_您可以在八月开始的500项免费在线编程和计算机科学课程
- swustOJ 1378 Best Grass
- leetcode 883. 三维形体投影面积(python)
热门文章
- ORB-SLAM论文翻译
- 使用 .NET 实现 Ajax 长连接
- 如何在ASP.Net 中把图片存入数据库
- 一种二维条码图像处理流程
- python窗口显示图片imread() imshow()_Python-OpenCV学习之imread,imshow
- Java学习总结:55(偶对象保存:Map接口)
- 有关Run-Time Check Failure #2 - Stack around the variable 'XXX' was corrupted.错误的解决方法
- c++ using 前置声明_C++ 类的前置声明
- android如何查看方法属于哪个类,Android Studio查看类中所有方法和属性
- python函数手册68_直接在python中检索68个内置函数?