下载了第一个测试点,本地AC,luoguWA,为何?
查看原帖
下载了第一个测试点,本地AC,luoguWA,为何?
793689
Ancap楼主2023/7/9 16:11

测试点

#include<bits/stdc++.h>
using namespace std;
#define XL_size 100000001
#define large_size 10000001
#define big_size 400001
#define _size_ 200001
#define mid_size 100001
#define small_size 10001
#define mini_size 5001
#define micro_size 2001
string mul(string a,int b)
{
	int arr[_size_],answer[_size_];string ansstr="";
	memset(arr,0,sizeof(arr));memset(arr,0,sizeof(arr));
	int lena,lenc=0,x=0;
	lena=a.size();
	for(int i=0;i<lena;i++) arr[lena-i]=a[i]-'0';
	while(lenc<=lena)
	{
		answer[lenc]=(arr[lenc]*b+x)%10;
		x=(arr[lenc]*b+x)/10;
		lenc++;
	}
	while(x!=0)
	{
		answer[lenc]=x%10;
		x/=10;
		lenc++;
	}
	while(answer[lenc]==0&&lenc>1) lenc--; 
	for(;lenc>=1;lenc--) ansstr+=answer[lenc]+'0';
	return ansstr;
}
string Add(string str1,string str2)
{
	string ans;
	int arr1[mid_size],arr2[mid_size],arr_answer[mid_size];
	memset(arr1,0,sizeof(arr1));memset(arr2,0,sizeof(arr2));memset(arr_answer,0,sizeof(arr_answer));
	int size1=str1.size(),size2=str2.size(),size3=1;//长度
	for(int i=1;i<=size1;i++) arr1[i]=(str1[size1-i]-'0');//string to array
	for(int i=1;i<=size2;i++) arr2[i]=(str2[size2-i]-'0');//string to array
	int x=0;
	while(size3<=size1||size3<=size2)
	{
		arr_answer[size3]=arr1[size3]+arr2[size3]+x;
		x=arr_answer[size3]/10;//进位
		arr_answer[size3]%=10;//每一位
		size3++;
	}
	if(x!=0) arr_answer[size3]=x;//对进位进行补充
	while(arr_answer[size3]==0&&size3>1) size3--;//删除不合法的0
	for(int i=size3;i>=1;i--) ans+=(arr_answer[i]+'0');
	return ans;
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);
	int a;string sum;
	cin>>a;
	for(int i=1;i<=a;i++)
	{
		string temp="1";
		for(int j=1;j<=i;j++) temp=mul(temp,j);
		sum=Add(sum,temp);
	}
	cout<<sum;
}

第一个测试点:

输入:6

输出:873

2023/7/9 16:11
加载中...