为什么90分,第一个测试点没过?
查看原帖
为什么90分,第一个测试点没过?
277974
kkkscgm楼主2020/10/6 18:17

为什么90分,第一个测试点没过?

代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,no,s[305]={1,1},l,r,i,j,p;
int main(){
	scanf("%d",&n);
	if(n<5)
		printf("%d\n%d\n",n,n);
	else{
		for(r=2;(r-1)*(r+2)/2<n;++r);
		if((r-1)*(r+2)/2==n) l=2,no=1;
		else if((r-1)*(r+2)/2==n+1) l=3,no=r,++r;
		else l=2,no=(r-1)*(r+2)/2-n;
		for(j=l;j<=r;++j,s[0]=i-1)
			if(j!=no){
				for(i=1;i<=s[0];++i) s[i]=s[i]*j+p,p=s[i]/10,s[i]%=10;
				while(p>0) s[i]=p%10,p/=10,++i;
			}
		for(i=l;i<r;++i) if(i!=no) printf("%d ",i);
		printf("%d\n",r);
		for(i=s[0];i>0;--i) putchar(s[i]+'0');
	}
	return 0;
}
2020/10/6 18:17
加载中...