先看代码
#include<iostream>
#include<iomanip>
using namespace std;
double Fact(int n) {
int i;
double result = 1;
for (i=2; i<=n; i++)
result *= i;
return result;
}
int main() {
int n;
cin>>n;
for(int nc=2; nc<=n; nc++) {
if(nc%2==0) {
cout<<nc<<"! = "<<fixed<<setprecision(0)<<Fact(nc)<<endl;
//cout<<nc<<"! = "<<(long long int)Fact(nc)<<endl;
}
}
}
注意这俩句
cout<<nc<<"! = "<<fixed<<setprecision(0)<<Fact(nc)<<endl;
cout<<nc<<"! = "<<(long long int)Fact(nc)<<endl;
上面的语句判题就是对的,下面的判题就是错的
n=50时:
上面语句是这个输出
50
2! = 2
4! = 24
6! = 720
8! = 40320
10! = 3628800
12! = 479001600
14! = 87178291200
16! = 20922789888000
18! = 6402373705728000
20! = 2432902008176640000
22! = 1124000727777607680000
24! = 620448401733239409999872
26! = 403291461126605650322784256
28! = 304888344611713836734530715648
30! = 265252859812191032188804700045312
32! = 263130836933693517766352317727113216
34! = 295232799039604119555149671006000381952
36! = 371993326789901177492420297158468206329856
38! = 523022617466601037913697377988137380787257344
40! = 815915283247897683795548521301193790359984930816
42! = 1405006117752879788779635797590784832178972610527232
44! = 2658271574788448529134213028096241889243150262529425408
46! = 5502622159812088456668950435842974564586819473162983440384
48! = 12413915592536072528327568319343857274511609591659416151654400
50! = 30414093201713375576366966406747986832057064836514787179557289984
下面的输出就是这样子了
50
2! = 2
4! = 24
6! = 720
8! = 40320
10! = 3628800
12! = 479001600
14! = 87178291200
16! = 20922789888000
18! = 6402373705728000
20! = 2432902008176640000
22! = -9223372036854775808
24! = -9223372036854775808
26! = -9223372036854775808
28! = -9223372036854775808
30! = -9223372036854775808
32! = -9223372036854775808
34! = -9223372036854775808
36! = -9223372036854775808
38! = -9223372036854775808
40! = -9223372036854775808
42! = -9223372036854775808
44! = -9223372036854775808
46! = -9223372036854775808
48! = -9223372036854775808
50! = -9223372036854775808
long long double也沦陷了(悲