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

(dp)17bupt新生赛——B. Hmz 的女装

时间:2017-03-17 17:49:57      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:相同   ++   atom   print   递推   --   review   long   多少   

时间限制 1000 ms 内存限制 65536 KB

题目描述

Hmz为了女装,想给自己做一个长度为n的花环。现在有k种花可以选取,且花环上相邻花的种类不能相同。
Hmz想知道,如果他要求第l朵花和第r朵花颜色相同,做花环的方案数是多少。这个答案可能会很大,你只要输出答案对109+7取模的结果即可。

输入格式

第一行三个整数n,m,k(1n100000,1m100000,1k100000)
接下来m行,每行两个整数l,r,表示要求第l朵花和第r朵花颜色相同。保证lr |(r?l) mod n| 1.

输出格式

输出m行。对于每一个询问输出一个整数,表示做花环的方案数对109+7取模的结果。

输入样例

8 3 2
1 4
2 6
1 3
8 3 3
1 4
2 6
1 3

输出样例

0
2
2
60
108
132

比赛时真该做这个……非常水的递推
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <cstdlib>
 5 #include <algorithm>
 6 #include <cstring>
 7 #include <string>
 8 #include <vector>
 9 #include <map>
10 #include <queue>
11 using namespace std;
12 typedef long long LL;
13 const LL MOD=1e9+7;
14 const int MAX=1e5+7;
15 int n,m,k;
16 LL a[MAX];
17 LL x;
18 LL an;
19 int l,r;
20 int main()
21 {
22     scanf("%d%d%d",&n,&m,&k);
23     a[0]=0;
24     x=1;
25     for(int i=1;i<=n;i++)
26     {
27         x=x*(LL)(k-1)%MOD;
28 //        printf("%d\n",x);
29         a[i]=(x-a[i-1]+MOD)%MOD;
30     }
31     while(m--)
32     {
33         scanf("%d%d",&l,&r);
34         an=k*a[abs(r-l)-1]%MOD*a[n-(abs(r-l)+1)]%MOD;
35         printf("%lld\n",an);
36     }
37     return 0;
38 }

 

 

(dp)17bupt新生赛——B. Hmz 的女装

标签:相同   ++   atom   print   递推   --   review   long   多少   

原文地址:http://www.cnblogs.com/quintessence/p/6567346.html

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