C++ 平方的modelo为零,阶乘modelo问题
我在做CS作业,问题是要得到n!,其中n>n; n++; 而(--n) { 事实=((事实%m)*(n%m))%m;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
您的代码中有两个错误
m=7+10^9
。这里的^
表示按位异或
运算符,而不是幂。您应该编写它m=7+10e9
或m=100000007
if(fact=0)
。当你给singleequal
时,它不是在检查,而是在给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;
//cout7+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;
}