Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 平方的modelo为零,阶乘modelo问题_C++_Modulo_Factorial - Fatal编程技术网

C++ 平方的modelo为零,阶乘modelo问题

C++ 平方的modelo为零,阶乘modelo问题,c++,modulo,factorial,C++,Modulo,Factorial,我在做CS作业,问题是要得到n!,其中n>n; n++; 而(--n) { 事实=((事实%m)*(n%m))%m; 您的代码中有两个错误 m=7+10^9。这里的^表示按位异或运算符,而不是幂。您应该编写它m=7+10e9或m=100000007 if(fact=0)。当你给singleequal时,它不是在检查,而是在给0赋值。所以写doubleequal。if(fact==0) 您的完整代码应该是这样的- #include <bits/stdc++.h> using names

我在做CS作业,问题是要得到n!,其中n>n; n++; 而(--n) { 事实=((事实%m)*(n%m))%m;
您的代码中有两个错误

  • m=7+10^9
    。这里的
    ^
    表示
    按位异或
    运算符,而不是幂。您应该编写它
    m=7+10e9
    m=100000007
  • if(fact=0)
    。当你给single
    equal
    时,它不是在检查,而是在给0赋值。所以写doubleequal。
    if(fact==0)
  • 您的完整代码应该是这样的-

    #include <bits/stdc++.h>
    using namespace std;
    
    int main () {
        long long n, m = 7+10e9, fact = 1;//value of m is given
        cin>>n;
        n++;
        while (--n) {
            fact = ((fact%m)*(n%m))%m;
            //cout<<fact<<endl;//added this of debugging
            if (fact == 0)
                break;//and this also
    
        }
        cout <<fact;
        return 0;
    }
    
    #包括
    使用名称空间std;
    int main(){
    long n,m=7+10e9,fact=1;//给出了m的值
    cin>>n;
    n++;
    而(--n){
    事实=((事实%m)*(n%m))%m;
    
    //cout
    7+10^9
    不会做你认为它会做的事。
    ^
    是位逻辑异或。
    10^9
    的计算结果是
    3
    ,如果我的心算正确。你是否假设7+10^9=1000000007?因为它不是。^是异或运算吗?你是对的,原始代码是正确的,这些都是在复制过程中出现的错误注意在
    fact%m
    这里可以简单地用
    fact
    代替它不可以,除非你的意思是n,无论如何,我的问题仍然没有解决。我认为你应该添加这个用法,并且不鼓励使用。你提到的只是打字错误,谢谢。但是问题没有解决,甚至没有解决
    #include <bits/stdc++.h>
    using namespace std;
    
    int main () {
        long long n, m = 7+10e9, fact = 1;//value of m is given
        cin>>n;
        n++;
        while (--n) {
            fact = ((fact%m)*(n%m))%m;
            //cout<<fact<<endl;//added this of debugging
            if (fact == 0)
                break;//and this also
    
        }
        cout <<fact;
        return 0;
    }