codeforces 584b 快速幂取模o(logn)

题意是怎么理解的我也不知道,就抄了一下

题目大意:给出n个等边三角形,每个顶点都可以是1~3中的一个数,一个等边三角形三个顶点的总和不能是6。在n个三角形中只要有一个等边三角形满足条件,当前情况就是合格的,问有多少种合格的情况。

解题思路:所有的情况27n,没有一个三角形满足条件7n,27n7n

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;

typedef long long ll;
const ll mod = 1e9 + 7;

ll quick_mod(ll a, ll b) {  
    ll ans = 1;  
    while(b) {  
        if(b&1) ans = (ans * a) % mod;  
        b >>= 1;  
        a = (a * a) % mod;  
    }  
    return ans;  
}  

int main() {
    ll n;
    scanf("%lld", &n);
    ll A = quick_mod(27, n);
    ll B = quick_mod(7, n);
    printf("%lld
", ((A % mod - B % mod) + mod) % mod);
    return 0;
}
原文地址:https://www.cnblogs.com/shimu/p/5659801.html