#include <stdio.h>
#include<string.h>
#include<math.h>
void cf(char s[9876],int u)
{
int ls=strlen(s);
int s1[9876]={0};
for(int i=0;i<ls;i++)
{
s1[i]=s[i]-'0';
s1[i]*=u;
}
for(int i=0;i<ls;i++)
{
if(s1[i]>9)
{
s1[i+1]+=s1[i]/10;
s1[i]%=10;
if(i+2>ls)ls=i+2;
}
}
for(int i=0;i<ls;i++)
{
s[i]=s1[i]+'0';
}
s[ls]='\0';
}
int main()
{
int n,i,k=0,a[10000]={0};
scanf("%d",&n);
char s[98765];
s[0]='1';
s[1]='\0';
if(n<=4)printf("%d",n);
else
{
for(i=2;i<n;i++)
{
a[i]=i;
k+=i;
if(k>=n)break;
}
if(k-n==1)
{
a[2]=0;
a[i+1]=i+1;
a[i]=0;
}
else a[k-n]=0;
for(int j=2;j<n;j++)
{
if(a[j]!=0)cf(s,a[j]);
}
int ls=strlen(s);
for(int j=ls-1;j>=0;j--)
{
printf("%c",s[j]);
}
}
return 0;
}
这题不知道为什么我没有测试点,全红,不知道怎么办