HDU,hdukmp

來源:互聯網
上載者:User

HDU,hdukmp

zhx's contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 448    Accepted Submission(s): 147


Problem DescriptionAs one of the most powerful brushes, zhx is required to give his juniors n problems.
zhx thinks the ith problem's difficulty is i. He wants to arrange these problems in a beautiful way.
zhx defines a sequence {ai} beautiful if there is an i that matches two rules below:
1: a1..ai are monotone decreasing or monotone increasing.
2: ai..an are monotone decreasing or monotone increasing.
He wants you to tell him that how many permutations of problems are there if the sequence of the problems' difficulty is beautiful.
zhx knows that the answer may be very huge, and you only need to tell him the answer module p. 
InputMultiply test cases(less than 1000). Seek EOF as the end of the file.
For each case, there are two integers n and p separated by a space in a line. (1≤n,p≤1018) 
OutputFor each test case, output a single line indicating the answer.
 
Sample Input
2 2333 5
 
Sample Output
21HintIn the first case, both sequence {1, 2} and {2, 1} are legal.In the second case, sequence {1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2}, {3, 2, 1} are legal, so the answer is 6 mod 5 = 1 
 
SourceBestCoder Round #33 






思路:由題意可以求出答案為(2^n-2)%p


但是n,p都是LL型的,快速冪的時候會爆LL,所以這裡要用到快速乘法,快速乘法其實和快速冪差不多,就是把乘號改為加號


注意:當n為1時,要輸出1,而當p為1時要輸出0;


AC代碼:

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define LL long long using namespace std;LL n, p;LL multi(LL a, LL b) {//快速乘法,其實和快速冪差不多     LL ret = 0;    while(b) {        if(b & 1) ret = (ret + a) % p;        a = (a + a) % p;        b >>= 1;    }    return ret;}LL powmod(LL a, LL b) {//快速冪     LL ret = 1;    while(b) {        if(b & 1) ret = multi(ret, a) % p;        a = multi(a, a) % p;        b >>= 1;    }    return ret;}int main() {while(cin >> n >> p) {if(p == 1) {cout << 0 << endl;} else if(n == 1) {cout << 1 << endl;} else {LL ans = powmod(2, n) - 2;if(ans < 0) ans += p;cout << ans << endl;}}return 0;}













聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.