首页 > 其他 > 详细

洛谷 P2320 [HNOI2006]鬼谷子的钱袋

时间:2019-08-05 23:55:06      阅读:180      评论:0      收藏:0      [点我收藏+]

题目传送门

解题思路:

对于每一个数i,我们都可以用i/2来表示,而对于i/2我们可以用i/4表示......(以此类推)

举个例子,对于10,我们可以用5 + 5来表示,而5可以用 3 + 2表示,2 可以用1 + 1表示,所以对于10,我们只需要5,3,2,1即可.

AC代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 
 4 using namespace std;
 5 
 6 int m,ans[2000000],k;
 7 
 8 int main()
 9 {
10     scanf("%d",&m);
11     while(m) {
12         ans[++k] = (m + 1) / 2;
13         m /= 2;
14     }
15     printf("%d\n",k);
16     k++;
17     while(--k) 
18         printf("%d ",ans[k]);
19     return 0;
20 }

 

洛谷 P2320 [HNOI2006]鬼谷子的钱袋

原文:https://www.cnblogs.com/lipeiyi520/p/11306013.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!