4进制思路。。。。。。。。

猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 1010 种配料(芥末、孜然等),每种配料可以放 11 到 33 克,任意烤鸡的美味程度为所有配料质量之和。

现在, Hanke 想要知道,如果给你一个美味程度 �n ,请输出这 1010 种配料的所有搭配方案。

输入格式

一个正整数 �n,表示美味程度。

输出格式

第一行,方案总数。

第二行至结束,1010 个数,表示每种配料所放的质量,按字典序排列。

如果没有符合要求的方法,就只要在第一行输出一个 00。

#include 
#include
using namespace std;


//4进制的数
char ct[] = "1111111111";
void next() {
	ct[9] += 1;
	for (int i = 9; i >= 0; i--) {		
		if (ct[i] == '4') {
			ct[i] = '1';
			ct[i - 1] += 1;
		}
	}
}
int cnt() {
	int n = 0;
	for (int i = 9; i >= 0; i--)
		n += ct[i] - '0';
	return n;
}  



int main() {

	int t;
	int res = 0;
	scanf("%d",&t);
	while (1) {
		if (cnt() == t) {
			res += 1;			
		}
			
		if (strcmp(ct,"3333333333")==0)
			break;
		next();
		
	}
	printf("%d\n",res);

	res = 0;
	strcpy(ct,"1111111111");
	while (1) {
		if (cnt() == t) {
			cout << ct << endl;
		}
		if (strcmp(ct, "3333333333") == 0)
			break;
		next();

	}
	return 0;
}

你可能感兴趣的:(算法)