试题 算法训练 猴子分苹果
试题 算法训练 猴子分苹果
题目描述:
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分。这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果。第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一份,最后把剩下的苹果重新合在一起。这些猴子依次悄悄来到山洞,都做同样的操作,恰好每次都剩下了m个苹果。第二天,这些猴子来到山洞,把剩下的苹果分成n分,巧了,还是剩下了m个。问,原来这些猴子至少采了多少个苹果。
输入格式
两个整数,n m
输出格式
一个整数,表示原来苹果的数目
样例输入
5 1
样例输出
15621
数据规模和约定
0<m<n<9
题意:
该题简化为这样,n个猴子,每个猴子将所看到的苹果均分为n份,多余m个苹果。拿走m个以及一份。求原来苹果的个数。
思路:
假设某一次猴子操作之前的苹果个数为sum2,操作之后的苹果个数为sum1,每一份苹果个数为num(中间变量)。那么
①sum2=n*num+m;
由①可知:(sum2-m)刚好是n整份(没有余数)的苹果;
②sum1=sum2-num-m(拿走m个以及一份)
由②可知:sum1=(sum2-m)-num【(sum2-m)是n整份,再减去num,就是(n-1)份的苹果】,所以sum1就是(n-1)份的苹果,每一份的个数为num。
所以sum1与sum2个关系为:
sum1×n/(n-1)=sum2-m;可以推出:sum1×n/(n-1)+m=sum2;
注意:
(1)确定一个值,即第n只猴子操作完(拿了m个苹果,又藏了一份苹果)之后苹果的个数。
(2)该题是蓝桥杯的题,但是我觉得有一个问题,那就是题目第一个测试数据出错,第二天猴子们把苹果分成n份时,一份至少1个,所以本题不是百分之百正确。
有bug的测试数据如下:
2 1
7
(这样的话,就意味着第n只猴子操作完只剩下1个苹果啦,没办法再分成2份啦,所以我觉得蓝桥杯该题存在的一个问题,但是不影响大家学习,这道题)
这个测试数据正确的答案应该是15
代码:
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int sum[10];
int main()
{ int n,m,flag,i,temp=0;cin>>n>>m;memset(sum,0,sizeof(sum));int num;//第n只猴子操作结束后分成 n份,每一份的个数 for(num=1;;num++)//注意这里,最好不要限制num的最大值,算出最后的答案结束即可 {sum[1]=n*num+m;//最后一只猴子操作完之后的苹果个数 if(((sum[1]-m)%n==0)&&(sum[1]%(n-1)==0)){for(i=2;i<=n+1;i++)//操作n次(因为有n只猴子) {flag=0;if(sum[i-1]%(n-1)==0&&(sum[i-1]-m)%n==0){sum[i]=sum[i-1]*n/(n-1)+m;//计算结果如上面思路中所写 if(sum[n+1])//算出来原来的苹果数就输出,且结束 {cout<<sum[n+1]<<endl;return 0;}}else{flag=1;//计算过程中,某次操作中,苹果的个数不符合要求 break;//要求((sum[1]-m)%n==0)&&(sum[1]%(n-1)==0) }}if(flag)//继续寻找最后一只猴子操作完的苹果个数 continue;}}return 0;
}
试题 算法训练 猴子分苹果相关推荐
- java 蓝桥杯算法训练 猴子分苹果(题解)
试题 算法训练 猴子分苹果 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些 ...
- 蓝桥杯 ALGO-121 算法训练 猴子分苹果
算法训练 猴子分苹果 时间限制:1.0s 内存限制:256.0MB 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只 ...
- 算法训练 猴子分苹果 C/C++
算法训练 猴子分苹果 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个 ...
- 蓝桥杯 算法训练 猴子分苹果
算法训练 猴子分苹果 时间限制:1.0s 内存限制:256.0MB 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一 ...
- Java实现 蓝桥杯VIP 算法训练 猴子分苹果
问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...
- 算法训练 猴子分苹果c语言,算法训练 猴子分苹果
问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...
- 蓝桥杯试题 算法训练 猴子吃包子C语言
问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉包,y1个韭菜包,z1个没有 ...
- 12行代码AC——试题 算法训练 猴子吃包子——解题报告
励志用尽量少的代码做高效的表达. 注意点: 挨个算吃包子的时间势必会因为省略小数的问题导致结果不准确. 因此,对于本题:我的核心思路是:分数代替小数,使用除法+取余的方式化简分数,进而解题. 代码: ...
- 试题 算法训练 翻转旋转变换
试题 算法训练 翻转旋转变换 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 现在有一张n行m列的由" ...
最新文章
- 大型高并发高负载网站的系统架构(转)
- Centos 7 修改内核启动顺序
- 802.1X的wpa认证流程-------4-way handshake过程分析
- 鸟哥的Linux私房菜(服务器)- 簡易 Cluster 架設
- (原创)浅谈任意文件下载漏洞的利用
- 部署egg需要用到pm2吗_使用宝塔面板部署校园综合服务平台项目
- golang 导入自定义包_二、Go基本命令及定制自定义第三方包
- 简单方法解决bootstrap3 modal异步加载只一次的问题
- java Hashset去重原理及HashMap key唯一原理
- 机器学习课程笔记【十】- 混合高斯与期望最大化算法
- 前端开发面试题-JavaScript(一)
- 计算方法实验(二):龙贝格积分法
- cocos2dx基础篇(20)——基本动画CCAnimation/CCAnimate
- mt管理器小白破解之路-基础篇第一课
- R语言使用sort函数降序排序向量数据、设置decreasing参数进行降序排序
- 亚马逊抄作业,股票打折安排上
- 需账号密码登陆的网页爬虫
- java中获取当前时间的代码
- Base64编码和图片转化
- 批量jpg转png 批量png转jpg 批量jpg2png 批量png2jpg
热门文章
- 广告动画 android,age动漫官方网软件app-AGE动漫无广告纯净版下载v1.4安卓版-西西软件下载...
- 深度学习之Bottleneck Layer or Bottleneck Features
- 百度站长俱乐部SEO提问收集-6
- 蓝桥杯 我们的征途是星辰大海 Java
- The maximum number of apps for free development profiles has been reached.
- 【步态识别】GaitPart 算法学习《GaitPart: Temporal Part-based Model for Gait Recognition》
- OpenStack Dashboard
- 《我的职场十年》-读后感-Pete的启示
- 如何构建供应链服务平台?
- dump会卡住mysql吗_使用MySQL MySqldump命令导出数据时的注意事项