51nod_魔法部落 ( 3的幂的和 | 快速幂 | 逆元 )

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44510468/article/details/102759637

文章目录

题目连接

题意

由等比数列推出
在这里插入图片描述
求 3的幂的和, 对 1e9+7 取模,
但是有除号, 不能直接这么除, 要么判断一下分子奇数单独处理, 要么就要转化为乘法, 也就是逆元


  1. 乘法逆元: B 和 X 的积对 MOD 取模 的余数 是 1, 则称 B 和 X 对于模 MOD 互为逆元

  2. 在这里插入图片描述
    乘法的同余公式


由公式一乘法逆元定理 和 公式二乘法同余定理, 推出了 “除法的同余公式”
其中 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

猜你喜欢

转载自blog.csdn.net/weixin_44510468/article/details/102759637