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; }