3157: 国王奇遇记
来源:互联网 发布:互联网金融与数据挖掘 编辑:程序博客网 时间:2024/04/27 15:08
3157: 国王奇遇记
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 720 Solved: 380
[Submit][Status][Discuss]
Description
Input
共一行包括两个正整数N和M。
Output
共一行为所求表达式的值对10^9+7取模的值。
Sample Input
5 3
Sample Output
36363
HINT
1<=N<=10^9,1<=M<=200
Source
Katharon+#1
据说本题还有O(m)的算法,不过苟蒻还不会。。。先挖个坑吧
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<vector>#include<queue>#include<set>#include<map>#include<stack>#include<bitset>#include<ext/pb_ds/priority_queue.hpp>using namespace std; const int N = 255;typedef long long LL;const LL mo = 1000000007; int n,m,f[N],C[N][N]; inline int Mul(const LL &x,const LL &y) {return x * y % mo;}inline int Add(const int &x,const int &y) {return x + y < mo ? x + y : x + y - mo;}inline int Dec(const int &x,const int &y) {return x - y >= 0 ? x - y : x - y + mo;} int ksm(int x,int y){ int ret = 1; for (; y; y >>= 1) { if (y & 1) ret = Mul(ret,x); x = Mul(x,x); } return ret;} int main(){ #ifdef DMC freopen("DMC.txt","r",stdin); #endif cin >> n >> m; C[0][0] = 1; if (m == 1) {cout << (1LL * n * (n + 1) / 2 % mo) << endl; return 0;} int A = ksm(m,n),B = ksm(Dec(1,m),mo - 2); f[0] = Mul(Mul(m,Dec(1,A)),B); for (int i = 1; i <= m; i++) { C[i][0] = 1; for (int j = 1; j <= i; j++) C[i][j] = Add(C[i - 1][j],C[i - 1][j - 1]); } A = ksm(m,n + 1); B = ksm(Dec(m,1),mo - 2); for (int i = 1; i <= m; i++) { A = Mul(A,n); int tmp = 0; for (int j = 0; j < i; j++) { int now = Mul(C[i][j],f[j]); tmp = (i - j & 1) ? Dec(tmp,now) : Add(tmp,now); } f[i] = Add(A,tmp); f[i] = Mul(f[i],B); } cout << f[m] << endl; return 0;}
0 0
- 3157: 国王奇遇记
- 【BZOJ 3157】【BZOJ 3516】国王奇遇记
- BZOJ 3157 国王奇遇记 & BZOJ 3516 国王奇遇记加强版
- 【bzoj3157】 【bzoj3516】 国王奇遇记 && 国王奇遇记加强版
- [bzoj3157][bzoj3516][bzoj4126]国王奇遇记
- bzoj: 3157 bzoj: 3516 bzoj: 4126 国王奇遇记 线性插值法
- [数学 二项式定理 快速幂] BZOJ 3157 && BZOJ 3516 && BZOJ 4126 国王奇遇记
- 【BZOJ 3157, 3516, 4126】 国王奇遇记 - 极致的组合数学
- 无名数学题1(国王奇遇记减弱版)
- BZOJ3157/3516 国王奇遇记/(加强版)
- 游泳奇遇记
- servlet奇遇记
- 求职奇遇记
- 求职奇遇记2
- 买书奇遇记
- 奇遇
- 奇遇
- 奇遇
- JQM panel使用实例
- cordova实现“再点击一次退出”效果
- Android 非静态内部类导致的内存泄露(非static内部类)
- vc++开发阶段总结
- JQM控件之Navbar和Tabs
- 3157: 国王奇遇记
- Jquery mobile 新手问题总汇
- LeetCode之路:344. Reverse String
- JQM自动提示插件autoComplete.js
- cordova读写文件(1)
- cordova读写文件(2)
- JQM Toggle switch、selectmenu动态设置默认选中值时没有效果的问题
- RabbitMQ Windows7下单机多节点安装 (二)
- form表单学习