bzoj1008(B站AC第七題)

大水題,繼我寫過的鬼谷子之後碰到的又一史上最水題,不過又沒1A,函數傳值(據說能少傳儘量少傳,可以降低時間)的時候,傳的是longlong,函數裏寫的是int,然後就WA了。。。。還是我太水了   思路是:(m^n-m*(m-1)^(n-1))%100003,用快速冪避免TLE,記得前一項取餘後的後一項取餘後的,記得在前一項加一個100003,避免變成負數。。。。。。以上

1008: [HNOI2008]越獄

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 4516  Solved: 1922
[Submit][Status]

Description

監獄有連續編號爲1...N的N個房間,每個房間關押一個犯人,有M種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄

Input

輸入兩個整數M,N.1<=M<=10^8,1<=N<=10^12

Output

可能越獄的狀態數,模100003取餘

Sample Input

2 3

Sample Output

6

HINT

6種狀態爲(000)(001)(011)(100)(110)(111)



c++
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
long long  n,m,ans=0;
int pf(long long x1,long long x2)
{
    int x=1;
    while (x2>0)
    {
        if (x2%2==1) x=x*x1%100003;
        x1=x1*x1%100003;
        x2/=2;
    }
    return x;
}
int main()
{
    scanf("%lld%lld",&m,&n);
    int an;
    ans=pf(m,n)+100003;
    an=pf(m-1,n-1)*m%100003;
    ans=(ans-an)%100003;
    printf("%lld\n",ans);
    return 0;
}

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章