zoukankan      html  css  js  c++  java
  • 51nod1008 N的阶乘 mod P(水题)

    题目简单来说就是:
    输入两个数N和P (N < 10000, P < 10^9),求N! Mod P =?

    一道水题两次都WA了,仔细检查后发现是for循环体出点问题,需要 s 先乘 i 后在对 p 取余,而不是 i 先对 p 取余后再乘 s ,后者结果是错误的。比如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;
        /*这样会出错,(s*i)%p和s*(i%p)结果不一样 */ 
            s=(s*i)%p;//正确写法 
        }
        return s%p;
    }
    int main()
    {
        long long n,p,i;
        cin>>n>>p;
        cout<<mod(n,p)<<endl;
        return 0;
    }
  • 相关阅读:
    5.21php
    5.20日报
    kubernetes
    kubernetes
    Kubernetes
    Docker
    Docker
    Docker
    Docker
    Docker
  • 原文地址:https://www.cnblogs.com/cnlik/p/11851879.html
Copyright © 2011-2022 走看看