2016西电校赛网络赛Problem B 猴子吃桃 II

猴子1.py 立即下载

Problem B

猴子吃桃 II

问题
现有 n 个桃子,无限可列个小猴子去领桃子吃。在桃子足够的情况下,排
在第 i 位的小猴子领 F (i) 个桃子,这里 F 是 Fibonacci 数列。若轮到第 i 个小
猴子时,剩余的桃子不到 F (i) 个,它就获得所有剩余的桃子,第 i + 1 个及以后
的小猴子就要挨饿了。
万神希望某只小猴子能拿到最多的桃子,那么这只猴子应该排在第几个位
置,又能吃到几个桃子呢?
Fibonacci 数列的定义见 http://oeis.org/A000045

输入格式

输入包含多组数据(最多 100 组),请处理到文件结束。
每组数据只有 1 行,包含正整数 n,表示桃子的总个数。
保证 1 ≤ n ≤ 10 18 。

输出格式

对于每组数据输出 1 行,包含两个整数,用空格分割。第一个整数表示小猴
子应该排在第几个位置,第二个整数表示小猴子能吃到几个桃子。
若排在两个位置能吃到的桃子数相同,则输出靠前的位置。

输入样例

1
20

输出样例

1 1
6 8

HINT

请正确使用 64 位整数,详见选手须知。

也没啥说的

/*************************************************************************
        > File Name: b.cpp
      > Author: dulun
      > Mail: dulun@xiyoulinux.org
      > Created Time: 2016年04月20日 星期三 12时02分19秒
 ************************************************************************/

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#define LL long long
using namespace std;
const int N = 100;

LL sum[N];

void init()
{
    sum[0] = 0;
    sum[1] = 1;
    sum[2] = 1;
    for(int i = 3; i < N; i++)
    {
        sum[i] = sum[i-1] + sum[i-2];
    }
}

int main()
{
    init();
    LL n;
    while(~scanf("%lld", &n))
    {
        if(n == 3 || n == 2 || n == 1)
        {
            printf("1 1\n");
            continue;
        }
        LL t = n, left, ans, left_pre;
        for(int i = 1; i < N; i++)
        {
            if(t > sum[i])
            {
                t-=sum[i];
                continue;
            }
            else{
                left = t;
                left_pre = sum[i-1];
                ans = i;
                break;
            }
        }
        if(left > left_pre)
        {
            printf("%lld %lld\n", ans, left);
        }
        else{
            printf("%lld %lld\n", ans - 1, left_pre);
        }
    }
    return 0;
}
猴子程序(数组算法,链表算法,递归算法) c语言版的猴子的源程序,用不同的方法求解桃子的总数。其中有递归算法,数组算法,链表算法。 立即下载

相关推荐

猴子桃子问题

题目描述 老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。 第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。 第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。 后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。 这里有n只小猴...

快乐星球 3975

笔记:Python猴子

笔记:猴子:猴子第一天摘下若干个桃子,当即了一半,不过瘾就多了一个, 第二天又将剩下的桃子了一半,不过瘾又多了一个,以后每天都前一天剩下的一半再加一个。到第10天刚好剩下一个。问猴子第一天摘了多少个桃子。探索数学之谜:猴子问题在数学世界里,有许多看似简单却又深奥有趣的问题,其中之一便是著名的“猴子”问题。这个问题虽然简单,却蕴含了深刻的数学思想和推理。假设有一只贪猴子,它在连续的十天里摘桃子。每天,它都会将剩下的桃子一半,并再多一个。

欢迎来到我的CSDN博客!在这里,我将分享关于技术、学习和生活的各种笔记和心得体会。无论你是正在学习编程、探索新技术,还是对生活中的点滴有所感悟,我都希望我的博客能够给你带来启发和帮助。 2154

猴子 II(Python)

请用函数编程实现。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬ ‬猴子第一天摘下若干个桃子,立即了一半,还不过瘾又多了一个,第二天将第一天剩下的桃子了一半又多了一个,以后每天以这个规律,到第十天再时发现只剩下一个桃子,问猴子第一天摘了多少个桃子

2301_79497461的博客 586

python123——猴子 II、字典翻转

一、猴子 题目要求: 猴子第一天摘下若干个桃子,立即了一半,还不过瘾又多了一个,第二天将第一天剩下的桃子了一半又多了一个,以后每天以这个规律,到第十天再时发现只剩下一个桃子,问猴子第一天摘了多少个桃子? def peach(n): if n==10: return 1 else: return (peach(n+1)+1)*2 for i in range(10,0,-1): print("第{}天有{}只桃子".form

yoghurt&girl的博客 5457

XDU-1139 猴子 II (水~斐波那契数求和) From 西电网络

XDU-1139 猴子 II (水~斐波那契数求和) 题意:若桃子无限提供,第i个猴子可分到F(i)桃子(斐波那契数) ,当n个桃子猴子瓜分掉,求分到最多的猴子的位置和桃子数 (相等输出靠前) ,考虑前两种情况 a[i]+t \ a[i-1] \ a[i-2],如 n = 3,应该输出1 1

SaySomething 945

zzuli新生训练学习第三天题解

A - 素数判定 ~~ 原网址 http://acm.hdu.edu.cn/showproblem.php?pid=2012 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。 Input 输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。 Outp...

weixin_45926600的博客 6667

1020【编程入门】猴子的问题

题目描述 猴子问题。猴子第一天摘下若干个桃子,当即了一半,还不过瘾,又多了一个。 第二天早上又将剩下的桃子掉一半,又多一个。以后每天早上都了前一天剩下的一半零一个。 到第N天早上想再时,见只剩下一个桃子了。求第一天共摘多少桃子。 输入 N 输出 桃子总数 样例输入 10 样例输出 1534 解析:本题中最大的陷阱在于第n天并没有按照上述规律桃子,因此第n天余下的1桃子与第1天的...

weixin_42341253的博客 794

递归经典问题(1)-简单题

简单计算: 1.阶乘n! int factorial(int n) { if(n<=1) return n; return n*factorial(n-1); } 阶乘(非递归方法): int factorial(int n) { int sum = 1; while(n>1){ sum*=n; n--; ...

92377 3545

java递归代码实现斐波那契数猴子等问题

递归:调用方法的过程中再次调用自己 要明确递归结束的条件 示例: 1.斐波那契数(假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,没有发生死亡): public static int fibo(int n) {   if (n == 1 || n == 2 ) {     return 1;   }   return fibo(n - 1) + fibo(n-2); } 2.猴子问题(猴子桃子问题,猴子第一天摘下若干个桃子,当即...

深蓝旭的博客 254

C语言经典题目:递归,迭代法解决斐波那契数,,猴子问题

1.猴子:某天摘若干个,当天掉一半,又多一个,重复到第8天时只剩下一个桃子了 分析: 设f(x)为每天还剩的桃子个数;题目中说到第8天时只剩下一个,则f(8)=1,同时从题目中可知猴子每天掉一半,又多了一个,因此f(8)=f(7)/2-1;据此可写出函数:f(x)=f(x-1)/2-1;f(x)=2*f(x+1)+1,f(8)=1 (1).利用递归,可推出公式f...

yeliner的博客 6682

猴子问题

时间限制:1 Sec内存限制:128 MB 提交:555解决:316 [提交][状态][讨论版] 题目描述 猴子问题。猴子第一天摘下若干个桃子,当即了一半,还不过瘾,又多了一个。第二天早上又将剩下的桃子掉一半,又多一个。以后每天早上都了前一天剩下的一半零一个。到第N天早上想再时,见只剩下一个桃子了。求第一天共摘多少桃子。 输入 N 输...

weixin_30361641的博客 320

XDOJ 猴子

1034: 猴子 时间限制: 1 Sec  内存限制: 128 MB 提交: 82  解决: 48 [提交][状态][讨论版] 题目描述 猴妈妈给小猴子们准备了N个桃子,无数个小猴子排队桃子,排在第一个的1桃子,排在第二个的2个桃子,排在第三个的4个桃子,排在第四个的8个桃子,以此类推,一旦桃子不够了,猴妈妈就把剩下的桃子给下一个猴子,然后其余的小猴子就得

Eng_your的专栏 939

猴子问题(三种方法解决)

题目:猴子第一天摘了若干个桃子,当即了一半,还不解馋,又多了一个;第二天,剩下的桃子的一半,还不过瘾,又多了一个;以后每天都前一天剩下的一半多一个,到第10天想再时,只剩下一个桃子了。问第一天共摘了多少个桃子? ———- 一、思路分析: 采用逆向思维,从后往前推断,发现其中有相同的地方,即出现递推公式,可以采用递归方法。 令S10=1,容易看出S9=2(S10+1),简化一下 S

图图 17万+

Problem D: 猴子问题

Problem D: 猴子问题 Time Limit: 1 Sec  Memory Limit: 128 MB   Description 猴子问题。猴子第一天摘下若干个桃子,当即了一半,还不过瘾,又多了一个。第二天早上又将剩下的桃子掉一半,又多一个。以后每天早上都了前一天剩下的一半零一个。到第N天早上想再时,见只剩下一个桃子了。求第一天共摘多少桃子。 Input ...

菜瓜的博客 1789

用迭代和递归解决——猴子桃子问题

猴子桃子题目描述猴子桃子问题:迭代方法分析题目:递归方法分析题目注意: 题目描述 猴子桃子问题: 一天猴子摘了若干桃子,每天现有桃子数的一半多一个,第7天早上只剩下1桃子,问猴子一共摘了多少个桃子? 迭代方法 分析题目: 可以使用后一天的桃子数推出前一天的桃子数。 设第n天的桃子为xn,就是前一天的桃子的二分之一减一。 即:xn-1=(xn+1)X 2 所以: 第7天:1个 第6天: 4个 第5天: 10个 … 第一天: 190 代码实现: //迭代 #include <stdio

H48530的博客 6562

XDU1034问题: 猴子

1293问题: 猴子时间限制: 1 Sec  内存限制: 128 MB提交: 730  解决: 335[提交][状态][讨论版]题目描述猴妈妈给小猴子们准备了N个桃子,无数个小猴子排队桃子,排在第一个的1桃子,排在第二个的2个桃子,排在第三个的4个桃子,排在第四个的8个桃子,以此类推,一旦桃子不够了,猴妈妈就把剩下的桃子给下一个猴子,然后其余的小猴子就得挨饿了^_^现在,有一只...

sandalphon4869的博客 442

xdoj 1034: 猴子

1034: 猴子 时间限制: 1 Sec 内存限制: 128 MB 提交: 412 解决: 204 [提交][状态][讨论版] 题目描述 猴妈妈给小猴子们准备了N个桃子,无数个小猴子排队桃子,排在第一个的1桃子,排在第二个的2个桃子,排在第三个的4个桃子,排在第四个的8个桃子,以此类推,一旦桃子不够了,猴妈妈就把剩下的桃子给下一个猴子,然后其余的小猴子就得挨饿了^_

从小跑开始 519

python - 猴子桃子,迭代

猴子桃子,每天一半+1个,第五天发现就剩1个 d,l=input("输入猴子的天数和那天剩下的桃子的数量,用空格隔开").split() d=int(d) l=int(l) for i in range(d): l=(l+1)*2 print("猴子总共摘了%d个桃子"%l) 不好意思打例题分析了,因为我没有成功一次做对过! 这里错了两处,首先input().split(),返回的是一个list,而list不能被int,只能是其元素被int。 所以我又写了d=int(d)。 其他方面,程序没

jhsxy2005的博客 1253
上一篇: 2016西电校赛网络赛 Problem A z1+z2
下一篇: 2016西电校赛网络赛 Problem C 寻找万神
Tony L.Du
博客等级 码龄11年 73粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值