[日常练习]算
来源:互联网 发布:求数组最大最小值 编辑:程序博客网 时间:2024/06/05 06:57
【问题背景】
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.
【输出格式】
仅一行, 包含所求的答案 mod10^9 +7的值。
【样例输入】
3 3
【样例输出】
56
【数据范围与规定】
对于50%的数据, 所有1≤ N,M ≤1000。对于100%的数据,所有1≤ N,M ≤50000。
直接利用等比数列求和公式可得
但是要用到逆元
由费马小定理得
x关于p的逆元为x^p-2
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>#include<queue>#include<vector>#include<climits>#include<string>#include<cstdlib>#include<ctime>#define MAX 1000000007#define LL long longusing namespace std;LL fastpow(LL x,LL t){ LL k=1,p; while(t>1) { if(t%2==1) k=((k%MAX)*(x%MAX))%MAX; t=t/2; x=((x%MAX)*(x%MAX))%MAX; } x=((x%MAX)*(k%MAX))%MAX; return x;} int n,m;LL i,ans,temp;int main(){ scanf("%d%d",&n,&m); ans+=m; for(i=2;i<=n;i++) { temp=(i*(fastpow(i,m)-1)%MAX*fastpow(i-1,MAX-2)%MAX)%MAX; ans=(ans%MAX+temp%MAX)%MAX; } printf("%lld",ans); return 0;}
阅读全文
0 0
- [日常练习]算
- 日常练习
- 日常练习
- 日常练习
- 日常练习
- 日常练习[perl]
- Java新手日常练习
- 日常练习随笔
- 【JAVA 日常练习】+ IO
- 日常思维练习
- 日常思维练习(2)
- 日常练习(9)
- python之日常练习
- 日常练习代码
- 日常练习代码
- 日常练习代码
- MySQL日常练习;
- 数据结构练习--日常更新
- 第3章 计算机的物质基础
- 天南地北话“事务”
- 最长公共连续子串和最长连续公共子序列
- 数据库基本概念
- (转)写一个网页进度loading
- [日常练习]算
- 单例模式singleton —— II
- Convert BST to Greater Tree
- Android APP架构思考
- 805A Fake NP
- 选择排序(C语言实现)
- Struts2传值的3种方式
- 0x01 【Linux入门学习之】vi/vim编辑器必知必会
- Cache缺失率的计算