uva 11384 Help is needed for Dexter

简介: 点击打开链接uva 11384 思路:找规律 分析: 1 题目说给定一个小于10^9的数,现在有n个数要求经过最少的步骤使得这个序列的所有数都为0,求这个最少的步骤 2 很明显的找规律题,题目明确说明每一次可以选择任意个的数减去一个正整数...

点击打开链接uva 11384

思路:找规律
分析:
1 题目说给定一个小于10^9的数,现在有n个数要求经过最少的步骤使得这个序列的所有数都为0,求这个最少的步骤
2 很明显的找规律题,题目明确说明每一次可以选择任意个的数减去一个正整数,那么我们看以下这个例子
1 2 3 4 5 6 = (1 2 3 (4 5 6)-4) +1 = (1 2 3 0 1 2) +1
那么我们根据题目的意思我们可以知道每一次可以选择多个相同的数进行减去一个数,那么所有相同的数实际上是同时消去的,那么这个序列1 2 3 0 1 2等价于 1 2 3 (0可以不用考虑)
那么我们假设n = 6时候为f(6),那么f(6) = f(3)+1.
3 那么推广所有的n,那么f(n) = f(n/2)+1,n = 1的时候f(1) = 1

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int getAns(int n){
    return n == 1 ? 1 : getAns(n/2)+1;
}

int main(){
    int n;
    while(scanf("%d" , &n) != EOF)
        printf("%d\n" , getAns(n));
    return 0;
}


目录
相关文章
UVa355 - The Bases Are Loaded
UVa355 - The Bases Are Loaded
52 0
UVa1531 - Problem Bee
UVa1531 - Problem Bee
56 0
uva101 The Blocks Problem
uva101 The Blocks Problem
58 0
uva 100 The 3n+1 problem
题目链接: http://www.programming-challenges.com/pg.php?page=studenthome /* The 3n+1 problem 计算每个数的循环节长度,求给定区间的循环节长度的最大值。 */ #include&lt;iostream&gt; #include&lt;stdio.h&gt; using namespace std;
1169 0
uva 1326 - Jurassic Remains
点击打开链接uva 1326 题意:给定n个由大写字母组成的字符串,选择尽量多的串使得每个大写字母都能出现偶数次 分析: 1 在一个字符串中每个字符出现的次数是无关的,重要的是只是这些次数的奇偶性。
926 0
uva 11039 - Building designing
点击打开链接uva 11039 思路:贪心(排序+枚举) 分析: 1 题目要求按照题目给定的数据求能够建立最高几层的楼房 2 题目要求上层的大小要比下层小,并且两层之间的颜色要交替的出现。
842 0
下一篇
DataWorks