码迷,mamicode.com
首页 > 其他好文 > 详细

洛谷P3197 HNOI2008 越狱

时间:2018-02-24 16:57:26      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:复杂   就是   view   cstring   code   long   target   mic   blog   

  题目传送门

  实际上昨天大鸡哥已经讲过这题了,结果没记住,今天一道相似的题就挂了。。。。。。吃一堑长一智啊。

  思路大致是这样:如果直接算发生越狱的情况会比较复杂,所以可以用间接法,用安排的总方案-不会发生越狱的方案就可以了。安排的总方案数很显然就是m^n,那么只需要求不会发生越狱的方案数就可以了。分析一下,首先在第一个房间安排一种宗教,那么还剩下m-1种宗教,n-1个房间,因为要与第一个房间不同,则第二个房间就有m-1种安排法,以此类推,第三个房间,第四个以及后面所有房间都是m-1种安排法,所以总的安排法就是m*(m-1)^(n-1)。最终答案就是m^n-m*(m-1)^(n-1),只要再注意取模就OK了。

  代码如下:

技术分享图片
//It is made by HolseLee on 24th Feb 2018
//Luogu.org P3197
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod=100003;
ll n,m,ans;
inline ll get(ll a,ll b)
{
  ll sum=1;
  while(b){
    if(b&1)sum=(sum*a)%mod;
    a=a*a%mod;b>>=1;}
  return sum;
}
int main()
{
  scanf("%lld%lld",&m,&n);
  ans=((get(m,n)%mod)-(m%mod*get(m-1,n-1)%mod)%mod)%mod;
  if(ans<0)ans+=mod;
  printf("%lld",ans);
  return 0;
}
View Code

 

洛谷P3197 HNOI2008 越狱

标签:复杂   就是   view   cstring   code   long   target   mic   blog   

原文地址:https://www.cnblogs.com/cytus/p/8466105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!