51nod1008 N的阶乘 mod P(水题)
生活随笔
收集整理的這篇文章主要介紹了
51nod1008 N的阶乘 mod P(水题)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目簡單來說就是:
輸入兩個(gè)數(shù)N和P (N < 10000, P < 10^9),求N! Mod P =?
一道水題兩次都WA了,仔細(xì)檢查后發(fā)現(xiàn)是for循環(huán)體出點(diǎn)問題,需要 s 先乘 i 后在對 p 取余,而不是 i 先對 p 取余后再乘 s ,后者結(jié)果是錯(cuò)誤的。比如2×(3%2)=2,而(2×3)%2=0.
代碼:
#include <iostream> #include <algorithm> using namespace std; long long mod(long long n,long long p) {long long s;s=1;for(long long i=1;i<=n;i++){//i=i%p;// s*=i;/*這樣會(huì)出錯(cuò),(s*i)%p和s*(i%p)結(jié)果不一樣 */ s=(s*i)%p;//正確寫法 }return s%p; } int main() {long long n,p,i;cin>>n>>p;cout<<mod(n,p)<<endl;return 0; }總結(jié)
以上是生活随笔為你收集整理的51nod1008 N的阶乘 mod P(水题)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树的深搜(DFS)与广搜(BFS)
- 下一篇: 51nod 1049 最大子段和