例题
题目原理
ans = mod + 1 – ( (1/n) % mod)m
变式可得
(1/n)%mod ==> nmod-1/ n ==> nmod-2
#include
#define ll long long const ll mod = 1e9+7; ll quick(ll base, ll power) //快速幂 {
long long result=1; while(power) {
if(power&1)//只有奇数才乘以底数 result=result*base%mod; base=base*base%mod; power=power>>1; } if(base==0){
result=0; } return result%mod; } int main(){
int t; scanf("%d", &t); while(t--){
ll n, m, ans; scanf("%lld%lld", &n, &m); ans = quick(n, mod-2)%mod; ans = quick(ans, m); ans = mod+1-ans; printf("%lld", ans); if(t!=0) printf("\n"); } return 0; }
解题思路
实现代码
#include
#define ll long long using namespace std; int a[]={
0}, b[]={
0}; const int mod = 1e9+7; ll quick(ll base, ll power){
ll ans=1; while(power){
if(power&1) ans = ans*base%mod; power >>= 1; base = base*base%mod; } if(base==0) return 0; return ans; } int main(){
int n; scanf("%d", &n); for(int i=0; i<n; i++) scanf("%d", &a[i]); for(int i=0; i<n; i++) scanf("%d", &b[i]); ll ans=1; for(int i=0; i<n; i++){
ans = (ans*(a[i]-b[i])%mod)*quick(a[i], mod-2)%mod; } printf("%d", (mod-ans+1)%mod); return 0; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213709.html原文链接:https://javaforall.net
