求助 大佬救命 0分
查看原帖
求助 大佬救命 0分
1114927
Lolaandd楼主2023/11/20 19:03
#include<stdio.h>
#define MAXN 100
void multiply(int num,int arr[],int *size)
{
	for (int i=0;i<*size;i++)
	{
		arr[i]=arr[i]*num;
	}
	for (int i=0;i<*size;i++)
	{
		if (arr[i]>=10)
		{
			arr[i+1]+=arr[i]/10;
			arr[i]=arr[i]%10;
		}
	}
	while(arr[*size-1]>=10)
	{
		arr[*size]+=arr[*size-1]/10;
		arr[*size-1]%=10;
		(*size)++;
	}
}
void sum (int arr1[],int arr2[])
{	
	int max_size=0;
	for(int i=0;i<=MAXN;i++)
	{
		if (arr1[i]==0&&arr2[i]==0)
		{
			max_size=i;
			break;
		}
	}
	for (int i=0;i<max_size;i++)
	{
		arr1[i]+=arr2[i];
	}
	for (int i=0;i<max_size;i++)
	{
		if(arr1[i]>=10)
		{
			arr1[i+1]+=arr1[i]/10;
			arr1[i]=arr1[i]%10;
		}
	}
}
int main ()
{
	int n,size=1;
	int result[MAXN]={0};
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int temp[MAXN]={1};
		for(int m=1;m<=i;m++)
		{
			multiply(m,temp,&size);
		}
		sum (result,temp);
	}
	for(int i=size;i>=0;i--)
	{
		if(result[i]==0) continue;
		printf("%d",result[i]);
	}
	return 0;
}
`````
2023/11/20 19:03
加载中...