UVA 11384 - Help is needed for Dexter
看了这题,我和我的小伙伴就惊呆了!!!
被前面的麻将题啊,立方体啊搞个半死
麻将那题等平静了在来敲,还没看作者的思路^ ^
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)); } }
新 blog : www.hrwhisper.me