C++ HOJ 猴子分桃
【题目描写叙述】
老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的財富——一大堆桃子。老猴子决定把这些桃子分给小猴子。
第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走当中的一堆。
第二个猴子来了。它把桃子分成五堆。五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走当中的一堆。
后来的小猴子都如此照办。最后剩下的桃子所有留给老猴子。
这里有n仅仅小猴子,请你写个程序计算一下在開始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。
【输入】
输入包含多组測试数据。
每组測试数据包含一个整数n(1≤n≤20)。
输入以0结束,该行不做处理。
【输出】
每组測试数据相应一行输出。
包含两个整数a,b。
分别代表開始时最小须要的桃子数。和结束后老猴子最少能得到的桃子数。
【演示样例输入】
5
1
0
【演示样例输出】
3121 1025
1 1
【算法思想】
an表示第n个猴子来的时候,总共多少个桃子。
求特征函数: a1=a1-(a1-1)/5 。a1=1
求通项公式:{an+4}={a1+4}q^(n-1)={a1+4}(5/4)^(n-1)
【屌丝代码】
#include <stdio.h>
#include <iostream>
int main()
{
int n, i;
int sum, l, t;
while (scanf("%d", &n)==1 && n)
{
l = 1;
for (i=1; i<n; i++)
l *= 5;
sum = 1+5*(l-1);
t = sum;
for (i=1; i<=n-1; i++)
t = (t-1)/5*4;
printf("%d %d\n", sum, t+n);
}
printf("%d %d\n", sum, t+n);
return 0;
}
【吊轨代码】
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
long long total_num,old_num;
while(cin>>n && n!=0)
{
total_num=pow(5,n)-4;
old_num=n+pow(0.8,n)*pow(5,n)-4;
cout<<total_num<<" "<<old_num<<endl;
}
return 0;
}
【误区释疑】
1.总共一个猴子。那仅仅猴子拿到的桃子数目为Numa。总共两个猴子拿桃子,最后一个猴子拿到的桃子数目为Numb;总共三仅仅猴子拿桃子。最后一个猴子拿到的桃子数目为Numc。这里的Numa!
=Numb!=Numc;
2.查找总共多少仅仅猴子,假设按不论总共多少仅仅猴子。最后一仅仅猴子拿到的数目都是Num个,之前的猴子数目就会混淆,这里一定要区分开两个概念,总共N仅仅猴子拿到的桃子数目和第N个猴子拿到的数目是不一样的。
C++ HOJ 猴子分桃的更多相关文章
- Java50道经典习题-程序41 猴子分桃
题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...
- JAVA 基础编程练习题41 【程序 41 猴子分桃】
41 [程序 41 猴子分桃] 题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把 多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 ...
- java例题_41 利用递归给猴子分桃
1 /*41 [程序 41 猴子分桃] 2 题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把 3 多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均 ...
- Python: 猴子分桃。海滩上有一堆桃子,五只猴子来分。
海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一 ...
- 猴子分桃—Python
def f(): for i in range(3120,4000): flag = 1 k=i for j in range(5): if i%5==1: i=(i//5)*4 else: flag ...
- 用python实现【五猴分桃】问题
转载链接:https://blog.csdn.net/cy309173854/article/details/78296839 据说“五猴分桃”问题最先是由大物理学家狄拉克提出来的,这一貌似简单的问题 ...
- C#之猴子吃桃儿问题的解法——猴子吐桃儿
猴子第一天摘了许多个桃子,先吃了所有桃子的一半,后又吃了一个:第二天又吃了剩下桃子的一半,后又吃了一个……第十天,剩1个桃子.问:猴子第一天摘了多少个桃子? 首先对“猴子吃桃”的过程进行正向推导,设: ...
- 猴子吃桃问题(南阳ACM324)
猴子吃桃问题 时间限制:3000 ms | 内存限制:65535 KB 难度:0 描述 有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此, ...
- 猴子吃桃问题(Java递归实现)
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只剩下 ...
随机推荐
- Firefox 之 应用小结
1. 调试脚本 做前端开发的朋友应该对FireFox再熟悉不过了,FireFox有一个附加组件FireBug.在HTML中可以直接写 <script type="tex ...
- Tkinter教程之Text篇(1)
from Tkinter import *root = Tk()t = Text() for i in range(1,10): t.insert(1.0,'0123456789\n')a = 'te ...
- exeption ORA-00907: missing right parenthesis
exeption ORA-00907: missing right parenthesis CreationTime--2018年8月16日11点11分 Author:Marydon 1.情景展示 ...
- 安装ESXI 5.5卡在LSI_MR3.V00解决方案
安装ESXI 5.5卡在LSI_MR3.V00解决方案 方法一 故障现象 此问题无论使用VMware官方镜像还是HP的自定义镜像都会出现一下情况并卡着不动.(此文档普遍存在各种服务器上,包括其它厂商服 ...
- 腾讯云-Linux 基础入门
Linux 基础入门 目录操作 任务时间:5min ~ 10min 创建目录 使用 mkdir 命令创建目录 mkdir $HOME/testFolder # $HOME 当前用户的家目录 root ...
- NYOJ----次方求模
次方求模 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一 ...
- Hex棋
Hex棋,又叫六角棋,译作海克斯棋.据说这个游戏是约翰·纳什发明的.网上并没有太多介绍,第一次听说是在"中国大学生计算机博弈大赛"官网上. 棋盘为11×11的六边形小格子组成,它是 ...
- 【LeetCode】154. Find Minimum in Rotated Sorted Array II (3 solutions)
Find Minimum in Rotated Sorted Array II Follow up for "Find Minimum in Rotated Sorted Array&quo ...
- eclipse容易卡死或者较慢的解决方案
http://blog.sina.com.cn/s/blog_5c6c4dc90100lg8n.html 问题: Eclipse经常卡住或Building workspace等待,感觉很不爽,很多朋友 ...
- C# 发布REST接口地址API服务
原文地址:https://blog.csdn.net/chinacsharper/article/details/21256569 今天碰巧,用到了淘宝的在线IP地址查询的Rest API,它提供接口 ...