# 求助各位大佬 #
查看原帖
# 求助各位大佬 #
259804
Taoyaoyao123楼主2020/7/4 19:04
#include<bits/stdc++.h>
using namespace std;
//把i放在i_arr[]中 
void put(int i_arr[],int i){ 
	int k=0;
	while(i){
		i_arr[k]=i%10;
		i/=10;
		k++;
	}
}
//s[]与i_arr[]相乘放在temp[]中,再由temp[]放到s[]中 
void multiply(int s[],int i_arr[]){
	int i,j,jin,sum,s_len,i_len;
	int temp[500];
	for(s_len=499;s[i]==0;s_len--);
	for(i_len=499;i_arr[i]==0;i_len--);
	for(i=0;i<=i_len;i++){
		jin=0;
		for(j=0;j<=s_len;j++){
			sum=s[j]*i_arr[i]+jin+temp[i+j];
			temp[i+j]=sum%10;
			jin=sum/10;
		}
		temp[i+j]=jin;
	}
	for(i=0;i<500;i++){
		s[i]=temp[i];
	}
}
//S[]与s[]相加,结果放在S[]中 
void add(int S[],int s[]){
	int i,jin=0,sum=0,S_len,s_len;
	for(S_len=499;S[S_len]==0;S_len++);
	for(s_len=499;s[s_len]==0;s_len++);
	for(i=0;i<=max(S_len,s_len);i++){
		sum=S[i]+s[i]+jin;
		S[i]=sum%10;
		jin=sum/10;
	}
	S[i]=jin;
}
main(){
	int n,i;
    int S[500],s[500],i_arr[500];
    memset(S,0,sizeof(S));
    memset(i_arr,0,sizeof(i_arr));
    cin>>n;
    for(;n;n--){
    	memset(s,0,sizeof(s));
    	s[0]=1;
    	for(i=n;i;i--){
    		put(i_arr,i);
    		multiply(s,i_arr);
		}
		add(S,s);
	}
	for(n=499;S[n]==0;n--);
	for(i=0;i<=n;i++){
		cout<<S[i];
	}
	puts("");
} 
>>万分感谢!
2020/7/4 19:04
加载中...