WA了,萌新求助
查看原帖
WA了,萌新求助
382274
暗影之梦楼主2022/5/14 09:43

我在loj上先做的这一题,AC了,第二天来洛谷粘贴时发现WA了

样例过了

#include<iostream>
#include<cstdio>
#include<cstring>
#define int long long
using namespace std;
int n,num,a[2000001],ans,b[2000001];
void dfs(int i)
{
//	cout<<i<<" "<<a[i]<<endl;
	if(a[i]>num) return ;
	if(i>=ans) return ;
	if(a[i]==num)
	{
		ans=i;
//		memcpy(b,a,sizeof(a));
		for(int i=1;i<=ans;i++) b[i]=a[i];
		return ;
	}
	for(int j=1;j<=i;j++)
	{
		if(a[j]+a[i]>num) break;
//		cout<<a[j]<<" "<<a[k]<<" "<<num<<endl;
		a[i+1]=a[j]+a[i];
		dfs(i+1);
	}
}
signed main()
{
	while(1)
	{
		ans=1e16;
		scanf("%lld",&n);
		if(n==0) break;
		num=n;
		while(num%2==0)
		{
			num/=2;
		}
		a[1]=1;
		dfs(1);
		for(int i=1;i<=ans;i++) 
		{
			printf("%lld ",b[i]);
		}
		while(b[ans]!=n)
		{
			b[ans]*=2;
			printf("%lld ",b[ans]);
		}
		printf("\n");
	}
	return 0;
}
2022/5/14 09:43
加载中...