70,012
社区成员




#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
int n = 0, firstnumber = 0;
double log_n_factorial = 0.0;
do
{
cin >> n;
for(int i = 1; i <= n; ++i)
{
log_n_factorial += log((double)i) / log(10.0);
}
log_n_factorial -= (int)log_n_factorial;
firstnumber = exp(log_n_factorial * log(10.0));
cout << firstnumber << endl;
log_n_factorial = 0.0;
}while(n != 0); // n = 0时退出循环
return 0;
}
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
int n = 0;
int firstnumber = 0;
double log_n_factorial = 0.0;
do
{
cin >> n;
log_n_factorial = 0.5 * log(2 * 3.14159265358979 * (double)n) / log(10.0) + (double)n * log((double)n / 2.71828459045) / log(10.0);
log_n_factorial -= (int)log_n_factorial;
firstnumber = exp(log_n_factorial * log(10.0));
// 1. 用sterling公式计算较小数字的阶乘的时候,存在比较大的误差,随着数字的增大误差越小。
// 2. 用switch...case...处理几个比较小的数字,其他的(见default)就均可以使用sterling公式计算出来的结果了。
switch(n)
{
case 0:
cout << "1" << endl;
break;
case 1:
cout << "1" << endl;
break;
case 2:
cout << "2" << endl;
break;
case 3:
cout << "6" << endl;
break;
case 7:
cout << "5" << endl;
break;
case 8:
cout << "4" << endl;
break;
default:
cout << firstnumber << endl;
}
}while(n != 0); // n = 0时退出循环
return 0;
}
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
int n = 0;
int firstnumber = 0;
double log_n_factorial = 0.0;
do
{
cin >> n;
log_n_factorial = 0.5 * log(2 * 3.14159265358979 * (double)n) / log(10.0) + (double)n * log((double)n / 2.71828459045) / log(10.0);
log_n_factorial -= (int)log_n_factorial;
firstnumber = exp(log_n_factorial * log(10.0));
// 1. 用sterling公式计算较小数字的阶乘的时候,存在比较大的误差,随着数字的增大误差越小。
// 2. 用switch...case...处理几个比较小的数字,其他的(见default)就均可以使用sterling公式计算出来的结果了。
switch(n)
{
case 0:
cout << "1" << endl;
case 1:
cout << "1" << endl;
case 2:
cout << "2" << endl;
case 3:
cout << "6" << endl;
case 7:
cout << "5" << endl;
case 8:
cout << "4" << endl;
default:
cout << firstnumber << endl;
}
}while(n != 0);
return 0;
}
#include<iostream>
#include<cmath>
#include<cstdlib>
#define pi 3.141592653
#define exp 2.718281828
using namespace std;
int main()
{
int n,m;
double s;
while(cin>>n)
{
s=log10(sqrt(2*n*pi))+n*log10(n/exp);
m=(int)pow(10.0,s-(int)s);
if(n==0)
cout<<"1"<<endl;
else if(n==1)
cout<<"1"<<endl;
else if(n==2)
cout<<"2"<<endl;
else if(n==3)
cout<<"6"<<endl;
else if(n==7)
cout<<"5"<<endl;
else if(n==8)
cout<<"4"<<endl;
else
cout<<m<<endl;
}
return 0;
}
long long n, sum1;
n = 13;
sum1 = nmultiple(n);
printf("%ld\n", sum1);
long double sum;
sum = (long double)sum1;//这里直接给错了。。。1932053504直接给成了6227020800.000000, 谁知道为什么吗
printf("%Lf\n", sum);
while(1)
{
if(sum > 10)
sum /= 10;
else
break;
}
printf("%Lf\n", sum);
int i;
for(i = 1; i < 10; i ++)
if((sum - i) < 1)
break;
printf("%d", i);
long long nmultiple(long long n)
{
if(n > 1)
n = n * nmultiple(n - 1);
return n;
}
void main()
{
long long n, sum1;
n = 13;
sum1 = nmultiple(n);
printf("%ld\n", sum1);
double sum;
sum = (double)sum1;
while(1)
{
if(sum > 10)
sum /= 10;
else
break;
}
printf("%f\n", sum);
int i;
for(i = 1; i < 10; i ++)
if((sum - i) < 1)
break;
printf("%d", i);
}
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
int n = 0;
int firstnumber = 0;
double log_n_factorial = 0.0;
cin >> n;
log_n_factorial = 0.5 * log(2 * 3.14159265358979 * (double)n) / log(10.0) + (double)n * log((double)n / 2.71828459045) / log(10.0);
log_n_factorial -= (int)log_n_factorial;
firstnumber = (int)(exp(log_n_factorial * log(10.0))+ 0.5); // 改成向上取整
cout << firstnumber << endl;
return 0;
}
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
int n = 0;
int firstnumber = 0;
double log_n_factorial = 0.0;
cin >> n;
log_n_factorial = 0.5 * log(2 * 3.14159265358979 * (double)n) / log(10.0) + (double)n * log((double)n / 2.71828459045) / log(10.0);
log_n_factorial -= (int)log_n_factorial;
firstnumber = exp(log_n_factorial * log(10.0));
cout << firstnumber << endl;
return 0;
}