试题 算法训练 猴子分苹果

题目描述:

资源限制
时间限制: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;
}

试题 算法训练 猴子分苹果相关推荐

  1. java 蓝桥杯算法训练 猴子分苹果(题解)

    试题 算法训练 猴子分苹果 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些 ...

  2. 蓝桥杯 ALGO-121 算法训练 猴子分苹果

    算法训练 猴子分苹果 时间限制:1.0s   内存限制:256.0MB 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只 ...

  3. 算法训练 猴子分苹果 C/C++

    算法训练 猴子分苹果 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个 ...

  4. 蓝桥杯 算法训练 猴子分苹果

    算法训练 猴子分苹果   时间限制:1.0s   内存限制:256.0MB      问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一 ...

  5. Java实现 蓝桥杯VIP 算法训练 猴子分苹果

    问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...

  6. 算法训练 猴子分苹果c语言,算法训练 猴子分苹果

    问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...

  7. 蓝桥杯试题 算法训练 猴子吃包子C语言

    问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉包,y1个韭菜包,z1个没有 ...

  8. 12行代码AC——试题 算法训练 猴子吃包子——解题报告

    励志用尽量少的代码做高效的表达. 注意点: 挨个算吃包子的时间势必会因为省略小数的问题导致结果不准确. 因此,对于本题:我的核心思路是:分数代替小数,使用除法+取余的方式化简分数,进而解题. 代码: ...

  9. 试题 算法训练 翻转旋转变换

    试题 算法训练 翻转旋转变换 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 现在有一张n行m列的由" ...

最新文章

  1. 大型高并发高负载网站的系统架构(转)
  2. Centos 7 修改内核启动顺序
  3. 802.1X的wpa认证流程-------4-way handshake过程分析
  4. 鸟哥的Linux私房菜(服务器)- 簡易 Cluster 架設
  5. (原创)浅谈任意文件下载漏洞的利用
  6. 部署egg需要用到pm2吗_使用宝塔面板部署校园综合服务平台项目
  7. golang 导入自定义包_二、Go基本命令及定制自定义第三方包
  8. 简单方法解决bootstrap3 modal异步加载只一次的问题
  9. java Hashset去重原理及HashMap key唯一原理
  10. 机器学习课程笔记【十】- 混合高斯与期望最大化算法
  11. 前端开发面试题-JavaScript(一)
  12. 计算方法实验(二):龙贝格积分法
  13. cocos2dx基础篇(20)——基本动画CCAnimation/CCAnimate
  14. mt管理器小白破解之路-基础篇第一课
  15. R语言使用sort函数降序排序向量数据、设置decreasing参数进行降序排序
  16. 亚马逊抄作业,股票打折安排上
  17. 需账号密码登陆的网页爬虫
  18. java中获取当前时间的代码
  19. Base64编码和图片转化
  20. 批量jpg转png 批量png转jpg 批量jpg2png 批量png2jpg

热门文章

  1. 广告动画 android,age动漫官方网软件app-AGE动漫无广告纯净版下载v1.4安卓版-西西软件下载...
  2. 深度学习之Bottleneck Layer or Bottleneck Features
  3. 百度站长俱乐部SEO提问收集-6
  4. 蓝桥杯 我们的征途是星辰大海 Java
  5. The maximum number of apps for free development profiles has been reached.
  6. 【步态识别】GaitPart 算法学习《GaitPart: Temporal Part-based Model for Gait Recognition》
  7. OpenStack Dashboard
  8. 《我的职场十年》-读后感-Pete的启示
  9. 如何构建供应链服务平台?
  10. dump会卡住mysql吗_使用MySQL MySqldump命令导出数据时的注意事项