您的位置:首页 > 运维架构

Topcoder SRM661 ColorfulLineGraphs

2015-06-15 00:17 537 查看

Problem Statement

 Bob is going to create a graph with N nodes. The graph will be constructed in two steps. First, Bob will take N isolated vertices, label them 1 through N and color each of them using one of K colors.
Then, Bob will add some directed edges to the graph. For each i between 2 and N, inclusive, Bob may choose a single value j < i such that the nodes i and j have different colors. If he does, he will add the edge from i to j to his graph. Note
that Bob may choose not to add any edge from node i, even if there are some valid choices of j.

Two graphs are considered the same if they have the same node colors and the same set of edges.

You are given the long longs N and K. You are also given an int M. Compute and return the number of different graphs Bob may construct, modulo M.

Definition

 
Class:ColorfulLineGraphs
Method:countWays
Parameters:long long, long long, int
Returns:int
Method signature:int countWays(long long N, long long K, int M)
(be sure your method is public)

Limits

 
Time limit (s):2.000
Memory limit (MB):256
Stack limit (MB):256

Constraints

-N will be between 1 and 1,000,000,000,000 (10^12), inclusive.
-K will be between 1 and 1,000,000,000,000 (10^12), inclusive.
-M will be between 2 and 1,000,000 (10^6), inclusive.

Examples

0) 
 
3

2

100000

Returns: 24

The 24 different graphs are shown below. In each picture, the vertices have labels 1, 2, 3 from the left to the right.


题意如上。因为比赛做的少,没怎么在比赛中出过第二题,一直对第二题有一种敬畏感,实则是一道非常简单的计数问题。

只需要在不考虑模数的情况下,推出公式:


再考虑模数的情况,借住快速幂和模的特性来很简单的求出答案。

反思:很多时候想复杂了。但也有很多情况是因为自己没有足够的能力和经验。

还是多做一些比赛吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  计数问题 快速幂