大神c免費解題網(wǎng)站
T233043 拆分題目描述一般來說,,一個正整數(shù)可以拆分成若干個2的若干次方的正整數(shù)的和,。例如,,1=2^0,,10=2^3+2^1 等,。對于正整數(shù) n 的一種特定拆分,,當且僅當在這種拆分下,,n 被分解為了若干個不同的 2 的整數(shù)次冪,。 例如,,10=8+2=2^3+2^1 7=4+2+1=2^2+2^1+2^0現(xiàn)在,,給定正整數(shù) n,你需要這個數(shù)的所有拆分中,,請你給出具體的拆分方案,。輸入格式第一行,包含一個正整數(shù) n,,表示水果的數(shù)量,。第二行,包含 n個空格分隔的整數(shù),,其中第 i 個數(shù)表示編號為 ii的水果的種類,,1代表蘋果,0 代表桔子,,2代表香蕉,。輸出格式這個數(shù)的拆分,你需要從大到小輸出這個拆分中的每一個數(shù),,相鄰兩個數(shù)之間用一個空格隔開,。可以證明,,在規(guī)定了拆分數(shù)字的順序后,,該拆分方案是唯一的。輸入輸出樣例輸入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;}