越獄 BZOJ - 1008

題目傳送門

思路:這個題正着想不容易想,但是我們可以去想怎麼才能讓越獄不發生,也就是任何兩個相鄰的人的信仰都不相同,然後再用所有的情況減去這個情況就好了。

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>

#define MAXN 1000010
#define MAXE 5
#define INF 0x7ffffff
#define MOD 100003
#define LL long long
#define ULL unsigned long long
#define pi 3.14159

using namespace std;

LL MI(LL a, LL b) {
    LL ans = 1;
    while (b) {
        if (b & 1) {
            ans = ans * a % MOD;
        }
        b >>= 1;
        a = a * a % MOD;
    }
    return ans % MOD;
}

int main() {
    std::ios::sync_with_stdio(false);
    LL m, n;
    cin >> m >> n;
    LL sum1 = MI(m, n);
    LL sum2 = m;
    sum2 %= MOD;
    sum2 = sum2 * MI(m - 1, n - 1) % MOD;
    cout << (sum1 - sum2 + MOD) % MOD << endl;
    return 0;
}
發佈了130 篇原創文章 · 獲贊 25 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章