蒟蒻刚学OI,求各位daolao给个hack点
查看原帖
蒟蒻刚学OI,求各位daolao给个hack点
632635
WOERDESUGX楼主2022/10/25 10:53
#include<bits/stdc++.h>
#define re register
using namespace std;
int cnt=0,vis[1000050],f=0;
long long n,Lucky=0;
int main()
{
	scanf("%lld",&n);
	if(n==1) {
		cout<<0<<endl;
		return 0;
	}
	for(re int i=0;i<=9;++i) {
		Lucky=Lucky+i;
		for(re int j=0;j<=9;++j) {
			Lucky=Lucky*10+j;
			for(re int x=0;x<=9;++x) {
				Lucky=Lucky*10+x;
				for(re int y=0;y<=9;++y) {
					Lucky=Lucky*10+y;
					for(re int z=0;z<=9;++z) {
						Lucky=Lucky*10+z;
						for(re int Nt=0;Nt<=9;++Nt) {
							Lucky=Lucky*10+Nt;
							for(re int Fool=0;Fool<=9;++Fool) {
								Lucky=Lucky*10+Fool;
								for(re int q=0;q<=9;++q) {
									if(Lucky*10+q>n) {
										f=1;break;
									}
									else if(Lucky*10+q+q+i+j+x+y+z+Nt+Fool==n) vis[++cnt]=Lucky*10+q;
									else if(Lucky*10+q+q+i+j+x+y+z+Nt+Fool>n) break;
								}
								
								if(f) break;Lucky/=10;
							}
							
							if(f) break;Lucky/=10;
						}
						
						if(f) break;Lucky/=10;
					}
					
					if(f) break;Lucky/=10;
				}
				
				if(f) break;Lucky/=10;
			}
			
			if(f) break;Lucky/=10;
		}
		
		if(f) break;Lucky/=10;
	}
	printf("%d\n",cnt);
	if(cnt) {
		sort(vis+1,vis+cnt+1);
		for(int i=1;i<=cnt;++i) printf("%d\n",vis[i]);
	}
		
	return 0;
}
/*

3817
2
3794
3803

*/
2022/10/25 10:53
加载中...