Huawei校招机试中的猴子吃桃问题

//============================================================================
// Name        : Monkey&Peach.cpp
// Author      : dun
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
using namespace std;

int main() {
    //int ans = 0;//答案
    int x = 0; //猴子的数量
    int n[20] = { 0 }; //每次剩余的桃子数
    cin >> x; //猴子数
    int i = 0;

    while (i < x) {
        if (1 == n[i] % x) {
            n[i + 1] = n[i] - 1 - n[i] / x;
            i++;
        } else {
            i = 0;
            n[0]++;
        }
    }
    cout << n[0]; //输出桃子数的结果
    return 0;
}
时间: 2024-10-12 22:48:43

Huawei校招机试中的猴子吃桃问题的相关文章

2014年七月华为校招机试题目--最难的一道, 呵呵!

今天百无聊赖之时, 漫心看到14年的华为校招机试题目, 一共三道, 前两道皆是平平, 第三道却柳暗花明, 让人眼前一亮. 咋一看, 饶有趣味, 看似平淡无奇, 然而却玄机颇深(对我这种弱渣而言).(不过对于ACMer, 好像应该用基础算法, 就能解决!) (然而我也只会基础的算法!!忏愧的紧!!!).如果有幸被大神看到, 能指点我一两招, 不胜感激!  下面是题目和我的详细题解思路(可供巨巨一笑!嘿嘿!). 2014年七月华为校招机试题目: 第三题: 输入一个正整数X,在下面的等式左边的数字之间

经典算法题每日演练——第三题 猴子吃桃

原文:经典算法题每日演练--第三题 猴子吃桃 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个.第二天早上又将剩下的桃子吃了一半,还是不过瘾又多 吃了一个.以后每天都吃前一天剩下的一半再加一个.到第10天刚好剩一个.问猴子第一天摘了多少个桃子? 分析: 这是一套非常经典的算法题,这个题目体现了算法思想中的递推思想,递归有两种形式,顺推和逆推,针对递推,只要 我们找到递推公式,问题就迎刃而解了. 令S10=1,容易看出 S9=2(S10+1), 简化一下 S9=2S10+2 S8=2S

循环-16. 猴子吃桃问题

循环-16. 猴子吃桃问题(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 徐镜春(浙江大学) 一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半加一个.到第N天早上想再吃时,见只剩下一个桃子了.问:第一天共摘了多少个桃子? 输入格式: 输入在一行中给出正整数N(1<N<=10). 输出格式: 在一行中输出第一天共摘了多少

兔子、棋盘放粮食、猴子吃桃

static void Main19篮球弹起的高度(string[] args) { //蓝球从5米高的地方落下,每次弹起的高度是上次的一半,问第n次弹起的高度? Console.WriteLine("请问弹起了几次?"); int n = Convert.ToInt32(Console.ReadLine()); double j = 5.0; for (int i = 0; i <= n - 1; i++) { j = j / 2; Console.WriteLine(j);

猴子吃桃--------两个猴子吃桃问题解决的详细描述

(1)猴子吃桃问题1. 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃一个.以后每天早上都吃了前一天剩下的一半另加一个.到第10天早上再想吃时,就只剩一个桃子了.求第一天摘了多少桃子. /* 猴子吃桃问题1. 问题描述:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个. 第二天早上又将剩下的桃子吃掉一半,又多吃一个. 以后每天早上都吃了前一天剩下的一半另加一个. 到第10天早上再想吃时,就只剩一个桃子了. 求第一天摘了多少桃

ACM每日一练(猴子吃桃问题)

描述 有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第m天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个? (m<29) 输入 第一行有一个整数n,表示有n组测试数据(从第二行开始,每一行的数据为:第m天): 输出 每一行数据是桃子的总个数 样例输入 2 3 11 样例输出 22 6142 普通解法 分析:  倒推  前一天的桃子总数 与后一天的桃子总数关系 递推公式是 a[m-1]=(a[m]+1)*2; 我们可以通过循环m

猴子吃桃问题

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下 的一半零一个.到第10天早上想再吃时,见只剩下一个桃子了.求第一天共摘了多少. 程序分析:采取逆向思维的方法,从后往前推断. 1 package com.li.FiftyAlgorthm; 2 3 /** 4 * 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾, 又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了

猴子吃桃问题。

题目描述 猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个. 第二天早上又将剩下的桃子吃掉一半,又多吃一个.以后每天早上都吃了前一天剩下的一半零一个. 到第N天早上想再吃时,见只剩下一个桃子了.求第一天共摘多少桃子. 输入 N 输出 桃子总数 样例输入 10 样例输出 1534 代码:#include<stdio.h>int main(){    int N,i,sum=1;    scanf("%d",&N);     for(i=2;

C语言之猴子吃桃

猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个.第二天早上又吃了剩下的桃子的一半,又多吃了一个.以后每天都吃了前一天剩下的一半零一个,到第 10 天早上想再吃的时候,就剩下一个桃子.求第一天共摘多少个桃子. 代码实现: #include <stdio.h> int sum_peach(const int n,int sum) {  int i=0;  for(i=n;i>0;i--)  {   sum=2*sum+1;  }  return sum; } i