等比数列求和+逆元——算
来源:互联网 发布:杜兰特新秀体测时数据 编辑:程序博客网 时间:2024/05/16 03:56
问题背景
zhx 帮他妹子做数学题。
问题描述
求:如N=3, M=3,这个值为1^1+1^2+1^3+2^1+2^2+2^3+3^1+3^2+3^3=56。
输入格式
仅一行,包含两个数N和M.
输出格式
仅一行,包含所求的答案 mod 10^9 + 7 的值。
样例输入
3 3样例输出
56数据范围与规定
对于50%的数据,所有1 ≤N,M ≤ 1000。对于100%的数据,所有1 ≤N,M≤ 50000。
思路
用一个美丽的高一数学公式:等比数列求和公式
就可以把这个假·O(N*M)的题优化为真·O(N)算法
注意:因为所求答案是模意义下的 所以需要一个O(N)的线性推逆元算法
代码(C++)
#include <cstdio>#define ll long longusing namespace std;const ll mod=1000000007;ll N,M,i,j,ans,ny[50010]={1,1};ll ksm(ll num,ll sum);int main(){scanf("%lld%lld",&N,&M);for(i=2;i<=N;i++)ny[i]=(mod-mod/i)*ny[mod%i]%mod;ans+=M;for(i=2;i<=N;++i)ans=(ans+i*(ksm(i,M)-1)%mod*ny[i-1]%mod)%mod;printf("%lld",ans);return 0;}ll ksm(ll num,ll sum){if(sum==1)return num;ll k=ksm(num,sum/2);k=k*k%mod;if(sum%2==0)return k;elsereturn k*num%mod;}
阅读全文
0 0
- 等比数列求和+逆元——算
- POJ 1845 Sumdiv (逆元 等比数列求和)
- POJ1845Sumdiv(逆元or等比数列求和)
- 等比数列求和 (快速幂 + 逆元)
- 第九周—等比数列求和
- 规律、等比数列、逆元
- 赚钱买房(java大数+逆元+等比数列求和+快速幂)
- 51nod 1013 3的幂的和(等比数列求和_快速幂+逆元)
- codeforces-327C Magic Five(等比数列求和+快速幂+逆元)
- Codeforces 327C 乘法逆元 + 费马小定理 || 等比数列二分求和取模
- 洛谷 P2715 约数和(唯一分解定理+等比数列求和+乘法逆元)
- 数学辨异 —— 泰勒展开与等比数列求和
- 等比数列求和
- 等比数列求和
- 等比数列求和..
- 等比数列求和
- 等比数列求和
- 等比数列求和
- 简单圆球水波动。手写
- 编程注意
- Mybatis基础---配置文件
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- 大文件切割工具
- 等比数列求和+逆元——算
- keras 提高 GPU利用率
- 【Dubbo】no provider available for the service错误解决方案
- Linux查看日志命令
- Vmware tools安装
- WEB前端面试题集锦1
- 近期阅读记录
- ubuntu下配置和使用github
- 上拉刷新和下拉刷新的实现