BZOJ 1192 鬼谷子的钱袋

        这道题比较简单,唯一的问题在于范围太大,暴力的方法是过不了的,因此不妨借用一下数学知识,相信不少人在小学竞赛做过这样一道题:老板有一串七个银环,只能切两次,员工每天要另一个银环该怎么办?这道题的答案很简单,分为一、二、四三段,我们不妨把题目延伸一下,数据扩大一点,便会得出这样的规律,我们只需分出2的所有此方的长度,便可以保证拿到任意数量的银环,所以这道题的做法就出来了。

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
 
using namespace std;
 
int i_money;
int i_temp=1,i_times;
 
int main()
{
    cin>>i_money;
   
    do
    {
        i_money=i_money-i_temp;
        i_times=i_times+1;
        i_temp=i_temp*2;
    }while(i_money>0);
     
    cout<<i_times<<endl;
     
    return 0;
}
感谢各位观看我的博客,希望能对您有所启发,谢谢。
posted @ 2015-07-11 21:01  wlxy  阅读(170)  评论(0编辑  收藏  举报