列表

详情


NC20069. [HNOI2008]越狱

描述

监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱

输入描述

输入两个整数M,N.
1 ≤ M ≤ 10^8,1 ≤ N ≤ 10^12

输出描述

可能越狱的状态数,模100003取余

示例1

输入:

2 3

输出:

6

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 428K, 提交时间: 2022-01-17 15:26:23

#include <bits/stdc++.h>
using namespace std;
const int mod=100003;
typedef long long ll;
ll pt(ll a,ll n){
	ll sum =1;
	while(n){
		if(n&1) sum=sum*a%mod;
		a=a*a%mod;
		n>>=1;
	}	return sum;
}
int main(){
	ll m,n;	
    cin>>m>>n;
	ll sum =pt(m,n)-m*pt(m-1,n-1)%mod+mod;
	cout<<sum%mod;
}

pypy3(pypy3.6.1) 解法, 执行用时: 39ms, 内存消耗: 18756K, 提交时间: 2020-09-01 19:41:48

m,n = map(int,input().split())
print((pow(m,n,100003) - m*pow(m-1,n-1,100003)+100003)%100003)

Python3 解法, 执行用时: 38ms, 内存消耗: 4656K, 提交时间: 2022-01-17 13:11:01

m,n=map(int,input().split())
print((pow(m,n,100003)-m*pow(m-1,n-1,100003))%100003)

上一题