版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
题意
由等比数列推出
求 3的幂的和, 对 1e9+7 取模,
但是有除号, 不能直接这么除, 要么判断一下分子奇数单独处理, 要么就要转化为乘法, 也就是逆元
-
乘法逆元: B 和 X 的积对 MOD 取模 的余数 是 1, 则称 B 和 X 对于模 MOD 互为逆元 -
乘法的同余公式
由公式一乘法逆元定理 和 公式二乘法同余定理, 推出了 “除法的同余公式”
其中 X 为 A 的逆元
那么, 代公式可得,
那么只剩下两步,
第一步, 快速幂求 3 的 n+1 次幂 再-1, 直接上板子
第二步, 求 B 的逆元 X, 这里只需要求 2 的逆元, 那么直接暴力
所得即为所求
题解
代码
#include <bits/stdc++.h>
typedef long long ll;
const ll mod = 1e9+7;
ll qpow ( ll base, ll n, ll mod ) {
ll ans = 1;
while ( n ) {
if ( n&1 ) ans = ans*base%mod;
base = base*base%mod;
n >>= 1;
}
return ans;
}
int main ( ) {
ll n, ans;
scanf("%lld", &n);
ans = (qpow(3, n+1, 1) - 1) * 500000004 % mod;
printf("%lld", ans);
return 0;
}
// 求 3的幂的和
原样
A 魔法部落
1.0 秒 131,072.0 KB 100 分
小Biu所在的部落是一个魔法部落,部落中一共有n+1个人,小Biu是魔法部落中最菜的,所以他的魔力值为1,魔法部落中n个人的魔法值都不相同,第一个人的魔法值是小Biu的3倍,第二个人的魔法值是第一个人的3倍,以此类推。
现在小Biu想知道整个部落的魔法值和是多少?由于答案比较大,请把答案对1e9+7取模之后输出。
输入
输入一个数N(0 <= N <= 10^9)
输出
输出:整个部落的魔法值和模1e9+7。
数据范围
对于20%的数据,n<=100;
对于40%的数据,n<=1000000;
对于100%的数据,n<=1000000000;
输入样例
3
输出样例
40
样例解释
30+31+32+33 = 1+3+9+27 = 40