トピックポータル
問題解決のアイデア:
各番号iについて、我々は、I / 2を使用することができ、I / 2のために、我々は、I / 4で表すことができるのに対し、......、表現(など)されています
10のために、我々は唯一の5,3,2,1する必要があるので、例えば、10のために、我々は5 +とを表すことができ、3及び5は、+ 2で表されることができ、2 + 1は、1で表すことができます。
ACコード:
1の#include <cstdioを> 2の#include <iostreamの> 3 4 使用して 名前空間STDを、 5 6 int型 M、ANS [ 2000000 ]、K。 7 8 のint main()の 9 { 10 のscanf(" %dの"、&M)。 11 一方、(M){ 12の ANS [++ K] =(M + 1)/ 2 。 13 M / = 2 。 14 } 15 のprintf(" %d個の\ nを"、K)。 16 K ++ 。 17 一方、( - K) 18 のprintf(" %dの" 、ANS [K])。 19 リターン 0 ; 20 }