您的位置:首页 > 其它

UVA 11384 - Help is needed for Dexter

2013-07-24 17:44 337 查看
看了这题,我和我的小伙伴就惊呆了!!!

被前面的麻将题啊,立方体啊搞个半死

麻将那题等平静了在来敲,还没看作者的思路^ ^

PS:输入输出流速度貌似很慢,用scanf和printf只要.0.052就出来了,而用cin,cout竟然要0.405!!!

一开始用输入流吓了我一跳,我以为效率咋这么低呢。

看了书发现方法一样,就改成了scanf,printf。。。。

以后果断不用流来做题了。

好了,不说废话

题目大意:

给定正整数N,你的任务是把序列1,2,……n中的所有书全部变为0,每次操作可以从序列中选择一个或者多个整数,同时减去一个相同的正整数。比如1,2,3可以吧2和3同时减少2,得到1,0,1。

很简单的方法:直接把后一般砍掉,那么就和前一半一样了。如1,2,3,4,5,6 一开始4,5,6砍掉4那么变成了1,2,3,0,1,2,,而这里的操作次数取决于1,2,3,。所以ans(n)=(ans/2)+1

#include<iostream>
#include<cstdio>
using namespace std;
int ans(int n)
{
return n==1? 1:ans(n/2)+1;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",ans(n));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: