1. 程式人生 > >【51nod】1008 N的階乘 mod P

【51nod】1008 N的階乘 mod P

題解:

這裡用到了同餘定理

(a+b)%m = (a%m + b%m) % m

(a*b)%m = (a%m * b%m) % m 

#include <cstdio>
using namespace std;

long long Solve(int n, int m){
    if(n == 1)
        return 1;
    return n * Solve(n-1, m) % m;
}

int main(){
    int n, m;
    while(~scanf("%d %d", &n, &m))
        printf("%lld\n", Solve(n, m));
    return 0;
}

相關推薦

51nod1008 N mod P

題解: 這裡用到了同餘定理 (a+b)%m = (a%m + b%m) % m (a*b)%m = (a%m * b%m) % m  #include <cstdio> using namespace std; long long Solve(i

NMOD P

#include <iostream> using namespace std; int mod(long long int n,long long int p) { if (n == 0) return 1; else return (mod(n

51Nod-1008N mod P

                                                       N的階乘 mod P 輸入N和P(P為質數),求N! Mod P = ? (Mod 就是求模 %) 例如:n = 10, P = 11,10! = 36

51nod 1008 N mod P

main lac esp mil style pan span spa 以及 輸入N和P(P為質數),求N! Mod P = ? (Mod 就是求模 %) 例如:n = 10, P = 11,10! = 3628800 3628800 % 11 = 10

快速冪的類似問題(51Nod 1008 N mod P

下面我們來看一個容易讓人蒙圈的問題:N的階乘 mod P。 51Nod 1008 N的階乘 mod P 看到這個可能有的人會想起快速冪,快速冪是N的M次方 mod P,這裡可能你就要說你不會做了,其實你會,為什麼呢,只要你明白快速冪的原理,你就會發現他們兩個其實差不多是同一個問題。 重要原

51nod 1008 N mod P

#include <bits/stdc++.h> using namespace std; int main() { long long n,p,ans,i; while(cin&g

1008 N mod P

 收藏  關注 輸入N和P(P為質數),求N! Mod P = ? (Mod 就是求模 %) 例如:n = 10, P = 11,10! = 3628800 3628800 %

C - N mod P

C - N的階乘 mod P  輸入N和P(P為質數),求N! Mod P = ? (Mod 就是求模 %) 例如:n = 10, P = 11,10! = 3628800 3628800 % 11 = 10 Input 兩個數N,P,中間用空格隔開。(N < 10000, P &l

51Nod_1008 N mod P

基準時間限制:1 秒 空間限制:131072 KB 分值: 0 難度:基礎題 輸入N和P(P為質數),求N! Mod P = ? (Mod 就是求模 %) 例如:n = 10, P = 11,10! = 3628800 3628800 % 11 = 10 In

N mod P

點選題目即可提交 輸入N和P(P為質數),求N! Mod P = ? (Mod 就是求模 %) 例如:n = 10, P = 11,10! = 3628800 3628800 % 11

BZOJ1130 N的長度 V2(斯特林近似)

n) ges src algo span ace pan nbsp closed 【算法】數學 【題解】斯特林公式: #include<cstdio> #include<algorithm> #include<cmath> usin

演算法計算出n中尾部零的個數

思路: 觀察1-20階乘的結果,觀察尾數為0的分佈情況 發現有一個5就會出現一個0 其中5!(有一個5),10!(有兩個5) 5!=120(一個0) 10!=3628800(兩個0) #include <stdio.h> long trailingZeros(long n) {

Python設計一個演算法,計算出n中尾部零的個數

1.常見的思路:先求N的階乘,再計算零的個數。 (但是,時間消耗太大)    def trailingZeros( n):         S = 1         for i in range(1,n+1):             S = S * i        

高精度高精度

class tro 分享 sub data pid ble clu 問題 問題 F: 【高精度】高精度階乘 時間限制: 1 Sec 內存限制: 64 MB提交: 297 解決: 58[提交] [狀態] [討論版] [命題人:] 題目描述 《魔法寶典》對於修羅王是如此重

ACM 大數運算 計算1000以內的

題目: 輸入不超過1000的正整數N,輸出N!=1x2x3x4……xN的精確結果 樣例輸入:30 樣例輸出:265252859812191058636308480000000 思路:由於數值過大,無法用任何型別的將其儲存,故使用乘法的基本算式求解。

C語言輸出N拉丁方陣並統計個數

題目如下: 在N行N列的數陣中, 數K(1〈=K〈=N)在每行和每列中出現且僅  出現一次,這樣的數陣叫N階拉丁方陣。例如下圖就是一個五階拉丁方陣。  編一程式,從鍵盤輸入N值後,打印出所有不同的N階拉丁方陣,並統計個數。         1  2  3  4  5    

HDU 3944 DP? 組合數取模+預處理

題意:從楊輝三角頂部走到的第n行第m列有很多種走法,求出這些走法中所經過的數之和的最小值。 首先稍加分析得出答案的組合表示式 C(n+1,m+1,p)+m (mod p)  這是在2m>n時的結

ACM 大數運算 計算1000以內的

題目: 輸入不超過1000的正整數N,輸出N!=1x2x3x4……xN的精確結果 樣例輸入:30 樣例輸出:265252859812191058636308480000000 思路:由於數值過大,無法用任何型別的將其儲存,故使用乘法的基本算式求解。 例子: 用一個len

Python自動化開發課堂筆記Day06 - Python進(類)

擴展性 程序 lex 類名 人物 優點 ini 參數 self. 類與對象 面向過程的程序設計:  優點:極大的降低了程序的復雜度  缺點:一套流水線或者流程就是用來解決一個問題,生產汽水的流水線無法生產汽車,即使能,也是得大改,改一個組件,牽一發而動全身面向對象的程序設計

Python自動化開發課堂筆記Day08 - Python進(面向對象的高級用法,網絡編程)

sta 自然 log 報錯 面向 read urn total 析構函數 面向對象的高級用法 1. __str__ 只要執行打印對象的操作,就會觸發該對象類中的__str__方法(也就是對象的綁定方法)它是一種默認的方法,默認的打印輸出為<__main__.Foo o