首页 > 电脑

大神c免费解题网站

更新时间2022-04-09 09:48:44

T233043 拆分
题目描述
一般来说,一个正整数可以拆分成若干个2的若干次方的正整数的和。
例如,1=2^0,10=2^3+2^1 等。对于正整数 n 的一种特定拆分,当且仅当在这种拆分下,n 被分解为了若干个不同的 2 的整数次幂。 例如,10=8+2=2^3+2^1 7=4+2+1=2^2+2^1+2^0现在,给定正整数 n,你需要这个数的所有拆分中,请你给出具体的拆分方案。
输入格式
第一行,包含一个正整数 n,表示水果的数量。
第二行,包含 n个空格分隔的整数,其中第 i 个数表示编号为 ii的水果的种类,1代表苹果,0 代表桔子,2代表香蕉。
输出格式
这个数的拆分,你需要从大到小输出这个拆分中的每一个数,相邻两个数之间用一个空格隔开。可以证明,在规定了拆分数字的顺序后,该拆分方案是唯一的。
输入输出样例
输入6输出4 2输入11输出 8 2 1

#include<stdio.h> #include<math.h> int main(void) { int answer(int); int x; scanf("%d",&x); answer(x); puts(""); return 0; } int answer(int x) { for(int i = x;i > 0;i--) { if(x - (int)pow(2,i)>=0) { printf("%0.lf ",pow(2,i)); if(x - (int)pow(2,i) == 1) { printf("1 "); } answer(x -= (int)pow(2,i)); break; } } return x; }

相关标签:大神

上一篇:xlsx表格中如何插入不可见字符

下一篇:excel多个对应数据分析