xiao_tuan_zi @ 2024-01-24 11:09:11
#include<bits/stdc++.h>
using namespace std;
int main(){
int i,a[1005]={0},b[1005]={0},n,j;
scanf("%d",&n);
a[0]=b[0]=1;
for(i=2;i<=n;i++){
for(j=0;j<100;j++){
b[j]*=i;
}
for(j=0;j<100;j++){
if(b[j]>9){
b[j+1]+=b[j]/10;
b[j]%=10;
}
}
for(j=0;j<100;j++){
a[j]+=b[j];
if(a[j]>9){
a[j+1]+=a[j]/10;
a[j]%=10;
}
}
}
for(i=100;1>=0&&a[i]==0;i--){
for(j=1;j>=0;j--){
printf("%d",a[j]);
}
}
return 0;
}
by tyr_04 @ 2024-01-24 11:55:50
@minjun 你样例都不测一下的吗?
by tyr_04 @ 2024-01-24 11:56:37
输出那里明显有问题啊
by xiao_tuan_zi @ 2024-01-24 11:56:49
@oier04 ,什么样例
by naromil @ 2024-01-24 11:58:23
输出有问题
for(i=100;1>=0&&a[i]==0;i--);
for(j=i;j>=0;j--){
printf("%d",a[j]);
}
by tyr_04 @ 2024-01-24 14:03:30
@minjun 题目下面不是有样例吗?
by tyr_04 @ 2024-01-24 14:04:58
一共只输出一个数,不需要用循环输出
by tyr_04 @ 2024-01-24 14:12:47
oh,用的是高精度啊
by tyr_04 @ 2024-01-24 14:17:05
改好了
#include<bits/stdc++.h>
using namespace std;
int main(){
int i,a[1005]={0},b[1005]={0},n,j,z=0;
scanf("%d",&n);
a[0]=b[0]=1;
for(i=2;i<=n;i++){
for(j=0;j<1000;j++){
b[j]*=i;
}
for(j=0;j<1000;j++){
if(b[j]>9){
b[j+1]+=b[j]/10;
b[j]%=10;
}
}
for(j=0;j<1000;j++){
a[j]+=b[j];
if(a[j]>9){
a[j+1]+=a[j]/10;
a[j]%=10;
}
}
}
for(i=1000;i>=0;i--){
if(a[i]!=0)
{
z=1;
cout<<a[i];
continue;
}
if(z==1)
{
cout<<a[i];
}
}
return 0;
}
by tyr_04 @ 2024-01-24 14:18:42
输出有问题,用高精度时,前面的
by tyr_04 @ 2024-01-24 14:19:22
@minjun 求关注