HDU 5793 A Boring Question(快速幂&求逆元)
来源:互联网 发布:boxers知乎 编辑:程序博客网 时间:2024/05/22 15:05
这道题就是给你一个公式,然后再给数据范围给你,然后求答案。
这道题的公式推到最后就是一个等比数列的求和公式,也就是说,输入n和m,然后从m的0次方一直加到n次方的和就是答案。
但是由于这道题的数据太大了,有1e9,所以我们不可能用for循环一直加到最后,所以根据公式,我们需要用到快速幂来求m^n。用快速幂求出来之后,我们根据等比数列的求和公式,就成了(1-m^n)/(1-m)%mod。因为还要对1e9+7取模,所以mod=1e9+7。但是因为要取模,所以直接当做除法来做会出错,所以,要把(1-m)和mod的逆元求出来,当做乘法来做。所以求逆元,其实就是求倒数。所以(1-m)和mod就是其倒数。
#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <cstdlib>#include <algorithm>#include <cmath>#include <vector>#include <set>#include <list>#include <queue>#include <map>#include <stack>#include <ctime>using namespace std;const int mod=1e9+7;const int maxn = 1000010;long long n,m;long long X,Y;long long mi(long long x,long long a,int p){ long long ans = 1; x = x % p; while(a) { if(a&1) ans = (ans * x) % p; x = (x * x) % p; a >>= 1; } return ans;}long long gcd(long long a,long long b){ int t,d; if(b == 0) { X = 1; Y = 0; return a; } d = gcd(b,a%b); t = X; X = Y; Y = t - (a / b) * Y; return d;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%lld%lld",&n,&m); gcd(m-1,mod); if(X < 0) X += mod; long long ans = (mi(m,n+1,mod)-1)*X%mod; printf("%lld\n",ans); } return 0;}
0 0
- HDU 5793 A Boring Question(快速幂+求逆元)
- HDU 5793 A Boring Question(快速幂&求逆元)
- HDU 5793 A Boring Question(逆元+快速幂)
- HDU-5793 A Boring Question(矩阵快速幂)
- HDU 5793 A Boring Question (找规律+快速幂)
- HDU 5793 A Boring Question【快速幂+逆元】
- Hdu 5793 A Boring Question【暴力打表+找规律+求逆元+快速幂+快速积】
- HDU 5793 A Boring Question (数学)
- HDU 5793 A Boring Question(数论)
- 【HDU】5793 A Boring Question
- hdu 5793 A Boring Question (数学 + 快速幂 + 乘法逆元)
- HDU 5793 A Boring Question (快速幂 + 乘法逆元 + 费马小定理)
- A Boring Question HDU
- hdu 5793A Boring Question (打表 + 乘法逆元 + 快速模)
- HDU-5793-A Boring Question(打表找规律)
- hdu 5793A Boring Question 推公式(多校)
- HDU 5793 A Boring Question (打表找规律)
- HDU 5793 A Boring Question (逆元)
- F4 help functionality for a dynpro screen field using the PROCESS ON VALUE-REQUEST statement
- django ifequal标签的使用方式
- mybities insert 的时候得到主键的值
- 不敢死队问题
- maven setting.xml配置说明
- HDU 5793 A Boring Question(快速幂&求逆元)
- POJ1328-Radar Installation
- 剑指offer - 旋转数组的最小数字
- ios--GCD实现单例模式
- 一个Linux下C线程池的实现
- mysql 常用几条语句
- 51Nod-1629-B君的圆锥
- HDG杭州站首次爆料华为3大生态圈 开发者称大饱耳福
- SQL面试