脱獄-----------------------------------数学の組み合わせ(高速)

刑務所には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;
 } 

公開された元の記事572件 賞賛された14件 ビュー10,000件以上

おすすめ

転載: blog.csdn.net/qq_43690454/article/details/105387385