码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 11384(递推&递归_G题)解题报告

时间:2018-01-25 18:20:45      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:ref   display   close   none   scan   set   一半   view   one   

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2379

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

题意:我们每次可以消掉一半,为什么呢;比如是1到10,那么我们第一次把6 到10同时减去5,那么剩下的就是1到5了是不是;也就是序列成为了1,2,3,4,5,1,2,3,4,5;那么在操作也就是不同的数字只剩下5个了,把1消为0,也就会同时把两个1都消为0;所以f(10) = f(5) +1;递归到最后就行了;所以得到递归序列:f(k)=f(k/2)+1;

代码:

 

技术分享图片
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;

int ned(int i){
    if(i==1)    return 1;
    return ned(i/2)+1;
}

int main(void){
    int b =0;
    while(~scanf("%d",&b)){
        printf("%d\n",ned(b));
    }

    return 0;

}
View Code

 

UVA 11384(递推&递归_G题)解题报告

标签:ref   display   close   none   scan   set   一半   view   one   

原文地址:https://www.cnblogs.com/caomingpei/p/8352232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!