2017山东省赛C题(SDUT3895逆元法求组合数)
来源:互联网 发布:7号外设淘宝店网址 编辑:程序博客网 时间:2024/06/17 20:57
这个题需要自己模拟,然后就能看出是杨辉三角.
当然不能直接数组打表,也不能Lucas,逆元求组合数
具体解法解释请看链接组合数取模(sdut3895+HDU3037)逆元法或Lucas
如果T%2==|w-xi|%2
result+=ci*C(T/2-dis/2,T)
#include<cstdio>#include<iostream>using namespace std;#define ll long longconst int mod=1000000007;const int maxn=100010;ll jiecheng[maxn];ll quzheng(ll a,ll b){ return a>b?a-b:b-a;}ll kuaisumi(ll a,ll b){ ll ans=1; while(b) { if(b&1) { b--; ans=(ans*a)%mod; } b=b>>1; a=(a*a)%mod; } ans=ans%mod; return ans;}ll C(ll m,ll n){ if(m>n) return 0; ll M=kuaisumi(jiecheng[m],mod-2); ll NM=kuaisumi(jiecheng[n-m],mod-2); return (((jiecheng[n]*M)%mod*NM)%mod)%mod;}int main(){ jiecheng[0]=1;jiecheng[1]=1; for(int i=2;i<maxn;i++) { jiecheng[i]=jiecheng[i-1]*i%mod; } ll n,T,w; while(cin>>n>>T>>w) { ll flag=T%2; ll res=0; while(n--) { ll x,c; cin>>x>>c; ll dis=quzheng(w,x); if(dis%2==flag&&dis<=T) { res+=(c*C(quzheng(T/2,dis/2),T)%mod); res=res%mod; } } res=res%mod; cout<<res<<endl; } return 0;}
阅读全文
0 0
- 2017山东省赛C题(SDUT3895逆元法求组合数)
- 2017山东省赛D题(SDUT3896逆元法求组合数)
- fireworks 2017年山东省ACM省赛C题 SDUT 3895 (逆元求组合数)
- 山东省赛二组合数dp
- 第八届山东省赛 C sdut 3895 fireworks(组合数+逆元)
- 2017年山东省第八届ACM大学生程序设计竞赛 C fireworks(sdut 3895) 逆元求组合数
- 山东省赛 C Firework (杨辉三角组合数逆元)
- 组合数取模(sdut3895+HDU3037)逆元法或Lucas
- 组合数取模(sdut3895+HDU3037)逆元法或Lucas
- 端午节个人赛-山东省省赛 fireworks(杨辉三角形+组合数+逆元)
- HEX----组合数+逆元+思维 山东省第八届省赛D题
- hatuoj 1300 HEX----组合数+逆元+思维 山东省第八届省赛D题
- 2017山东省赛B题Quadrat
- 2017山东省赛总结
- 2017山东省赛 Fireworks
- Alice and Bob (2013山东省赛)-二进制拆分组合
- 2017山东省第八届ACM省赛 D. HEX(组合数学)
- 组合数C(n,r)
- 【Mysql】select,数据简单查询整理总结
- AJAX学习(一)ajax发送请求
- String类
- 实现密码眼功
- 连续子数组求和
- 2017山东省赛C题(SDUT3895逆元法求组合数)
- 数组与链表的比较
- 欢迎使用CSDN-markdown编辑器
- 深入理解javascript原型和闭包(1)——一切都是对象
- 静、动态绑定和JVM机制的分析
- Codeforces 803 B. Distances to Zero 模拟
- servlet 过滤器 监听器
- 如何实现用户的历史记录功能(最多n条)
- eclipse取消validation验证