[HNOI2008]越狱

来源:互联网 发布:python jenkins api 编辑:程序博客网 时间:2024/06/05 22:42

1008: [HNOI2008]越狱

Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 10743 Solved: 4682
[Submit][Status][Discuss]

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)




读完题目,马上有两种思路,第一种是直接求出个数,第二种是求出总个数再减去不可行的个数。

对于第一种思路,我们会发现,想要表示出来会比较复杂(我自己是整了半天都没整明白)。

相比之下第二种就简单多了。

总组合数为 M^N,其中有 M*(M-1)^(N-1) 个是不满足的个数。

这里写图片描述

如图,第一个人可以有 M 种可能,第二个人为了和第一个人不一样,那么就只有 M-1 种选择了,第三个人又要和第二个人不一样,所以也只有 M-1 种可能,后面以此类推。

最后还是特殊情况,由于我们在求解过程中会对100003取模,所以,作差可能会是负数,需要+100003补回来。

(a - b) % t = ((a % t)-(b % t) + t) % t

a = k1 * t + r1 ; b = k2 * t + r2

(a - b) % t = (k1*t + r1 - k2*t - r2) % t

(a - b) % t = ((k1-k2)*t + r1-r2) % t

设 x*t ≥ |r1 - r2|

(a - b) % t = ((k1-k2-x)*t + (r1-r2 + x*t)) % t

(a - b) % t = (k1-k2-x)*t%t + (r1-r2 + x*t)%t

∵ -t<r1-r2<t

∴ (a - b) % t = ((a % t)-(b % t) + t) % t


这次自己码了一段。

#include<cstdio>#include<algorithm>#define tt 100003#define LL long longusing namespace std;LL read(){    LL ret=0;    char ch=getchar();    while (ch<'0'||ch>'9') ch=getchar();    while (ch>='-'&&ch<='9') ret=ret*10+ch-'0',ch=getchar();    return ret;}int main(){    LL n,m,x,y,s1,s2;    m=read(),n=read()-1;    if (n==1) {printf("0");return 0;}    if (m==1) {printf("1");return 0;}    s1=s2=x=m%tt;    y=(m-1)%tt;    while (n)//快速幂,s1是M^N,s2是M*(M-1)^(N-1)    {        if (n&1) s1=s1*x%tt,s2=s2*y%tt;        x=x*x%tt;y=y*y%tt;n>>=1;    }    m=s1-s2;    if (m<0) m+=tt;    printf("%lld",m);    return 0;}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 巴西龟能吃吗 巴西龟长多大 巴西龟能长多大 家里养巴西龟吉利吗 巴西龟可以吃吗 巴西龟冬天怎么养 巴西龟能活多久 巴西龟怎么吃 小巴西龟吃什么 巴西龟认识主人吗 巴西龟白眼病 巴西龟能一直泡水里吗 巴西龟冬眠怎么养 巴西龟为什么不能吃 巴西龟怎么养才不会死掉 红耳巴西龟 巴西翠龟 巴西龟好吃吗 巴西龟喜欢吃什么 巴西龟的寿命 巴西龟怎么养放多少水 巴西龟的饲养方法 巴西龟干养 养巴西龟的注意事项 巴西龟的寿命是多少 小巴西龟 巴西龟可以干养吗 巴西龟能吃吗营养高吗 巴西彩龟 巴西龟可以深水养吗 巴西龟能放生吗 巴西龟多大能下蛋 巴西龟好养吗 巴西龟的危害 巴西龟吃什么长得快 小巴西龟图片 巴西龟能不能吃 巴西龟水位有多深合适 巴西龟可以长多大 巴西龟什么时候下蛋 巴西龟有毒吗