题目链接
https://ac.nowcoder.com/acm/contest/7412/A
解题思路
快速幂,费马小定理,快读函数,这仨就够用了。
本题而言,牛牛输的概率为1-1/(n^m)=(n^m-1)/(n^m)
费马小定理得(b/a)%p=(ba^(p-2))%p,对应到本题上来,(n^m-1)/(n^m)%p=((n^m-1)(n^m)^(p-2))%p
这样看公式实在别扭,还是写一下吧。
知识点详解
之前小白月赛25的D题与这个十分类似,而且当时写的特别详细,所以这次就不写了,直接给大家链接了。
小白月赛25D题
【模板】有理数取余(小白版)
AC代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=1e9+7;
ll read(){//快读板子
ll f=1;
ll x=0;
char ch;
ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
x=(x<<3)+(x<<1)+ch-'0';
ch=getchar();
}
return f*x;
}
ll ksm(ll x,ll n){//快速幂板子
ll ans=1;
while(n>0){
if(n&1LL) ans=ans*x%mod;
x=x*x%mod;
n>>=1;
}
return ans%mod;
}
int main(){
ll t,m,n;
t=read();
while(t--){
n=read();
m=read();
//核心代码
ll tmp=ksm(n,m);
cout<<((tmp-1)*ksm(tmp,mod-2))%mod<<endl;
}
} 自我总结
系统地做过一次了,这次做的时候还是忘记了,WTCL QAQ

京公网安备 11010502036488号