刑務所には1からnまでの連続番号を持つn個の部屋があり、各部屋には1人の囚人がいます。
mの宗教があり、各囚人はそれらの1つを信じるかもしれません。
隣接する部屋の囚人が同じ宗教を信じている場合、刑務所の休憩が発生する可能性があります。
脱獄される可能性のある州の数を調べます。
入力フォーマット
は1行で構成され、2つの整数mとnが含まれます。
出力形式
脱獄される可能性のある状態の数。
データ範囲
1≤m≤108、
1≤n≤1012
入力サンプル:
23
出力サンプル:
6
サンプル説明
(000)(001)(011)(100)(110):すべての可能な6つの状態であります(111)。
分析:
最初にすべてのプログラムの数m n
を見つけ、次に脱獄のないプログラムの数を差し引くm *(m-1)(n-1)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=100003;
ll n,m;
ll quick(ll a,ll b)
{
ll res=1;
while(b)
{
if(b&1) res=res*a%MOD;
a=a*a%MOD;
b>>=1;
}
return res;
}
int main()
{
scanf("%lld %lld",&m,&n);
cout<<(quick(m,n)%MOD-m*quick(m-1,n-1)%MOD+MOD)%MOD<<endl;
}