【算法作业】实验一:轮流报数与鸡兔同笼

简介: 【算法作业】实验一:轮流报数与鸡兔同笼

第一题:轮流报数


1.题目

有5个人A,B,C,D,E玩一个游戏,规则如下:

从1开始5人轮流报数,如果遇到7的倍数或者含有7的数字则跳过.当报完N个数后(不包括跳过的数)结束游戏。

统计游戏中每个人各跳过了几个数。

输入:

输入一行,包含一个正整数N

输出:

输出6行,前5行每行有一个整数,表示A,B,C,D,E在游戏中跳过了的数的个数。第6行一个整数表示游戏结束时最后一个报的数

样例1输入

20

样例1输出

1

2

0

1

0

24

样例解析

游戏过程为:

A:1,B:2,C:3,D:4,E:5

A:6,B:跳过,C:8,D:9,E:10

A:11,B:12,C:13,D:跳过,E:15

A:16,B:跳过,C:18,D:19,E:20

A:跳过,B:22,C:23,D:24

D报出24后,5个人总共报了20个数,游戏结束。

其中A跳过1次,B跳过2次,C没有跳过,D跳过1次,E没有跳过

最后一次报的数是24


2.算法分析

直接模拟报数的过程即可。

检查数字是否含有7可能有一点小小的麻烦,因此另外用了一个函数来实现这个功能。


3.代码实现

#include<iostream>
using namespace std;
int have_7(int x){
  int num=0;
  int flag=0;
  while(x > 0) {
  num = x % 10;
  if(num == 7) {
    flag = 1;
    break;
  }
  x = x / 10;
  }
  return flag;
}
int main(){
  int num=0;
  int count=0;
  int a[5]={};
  int index=0;
  int n=0; 
  //输入
  cin>>n;
  //报数 
  for(num=1; count<n; num++){
  if((num % 7 == 0) || (have_7(num) == 1)){
    a[index]++;
  }
  else {
    count++;
  }
  index = (index + 1) % 5;
  } 
  //输出
  for(int i=0; i < 5; i++){
  cout<<a[i]<<endl;
  } 
  cout<<num - 1; //已经报满后,循环末仍然会num++ 
  return 0;
}

4.成功通过


image.png

第二题:鸡兔同笼


1.题目

一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。

输入一行,一个正整数a (a < 32768)。

输出一行,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。如果没有满足要求的答案,则输出两个0,中间用一个空格分开。

样例输入:

20

样例输出:

5 10


2.算法分析

注意如果脚的数量不是4的倍数,则无法全为兔子。


3.代码实现

#include<iostream>
using namespace std;
int main(){
  int jio=0; //脚的数量
  int max=0; //动物最大数量 
  int min=0; //动物最小数量 
  cin>>jio;
  //求最大
  max=jio/2;
  //求最小
  min=jio/4;
  if(jio % 4 != 0){
  min++;
  } 
  //输出 
  cout<<min<<' '<<max;
  return 0;
}

4.运行结果

image.png


image.pngimage.pngimage.png

相关文章
|
1月前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
2月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
152 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
2月前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
41 0
|
3月前
|
算法 调度
作业调度算法_先来先服务算法_短作业优先算法_高响应比优先算法
本文介绍了作业调度算法,包括先来先服务(FCFS)、短进程优先(SJF)和高响应比优先(HRRN)算法。通过分析进程的到达时间和所需CPU服务时间,计算进程的开始时间、完成时间、平均周转时间和平均带权周转时间,以评估不同算法的性能。FCFS适合长作业,SJF适合短作业,而HRRN则综合了两者的优点。
142 12
|
4月前
|
算法
算法设计与分析作业
这篇文章是关于算法设计与分析的作业,其中包含了两个算法实现:一个是使用分治算法实现的十进制大整数相乘(包括加法、减法和乘法函数),并进行了正确性和健壮性测试;另一个是使用快速排序思想实现的分治查找第K小元素的程序,并分析了其平均和最坏时间复杂度。
算法设计与分析作业
|
2月前
|
算法
计科一二班算法数据结构实验9答案
计科一二班算法数据结构实验9答案
19 0
|
2月前
|
存储 算法 安全
ArrayList简介及使用全方位手把手教学(带源码),用ArrayList实现洗牌算法,3个人轮流拿牌(带全部源码)
文章全面介绍了Java中ArrayList的使用方法,包括其构造方法、常见操作、遍历方式、扩容机制,并展示了如何使用ArrayList实现洗牌算法的实例。
26 0
|
4月前
|
算法 Java 测试技术
算法分析(蛮力法与减治算法应用实验报告)
这篇文章是关于算法分析的实验报告,介绍了如何使用蛮力法解决背包问题,并通过伪代码和Java代码实现,同时分析了其时间效率;还介绍了基于减治法思想实现的二叉查找树的插入与查找,同样提供了伪代码、Java源代码实现和时间效率分析,最后展示了测试结果截图。
算法分析(蛮力法与减治算法应用实验报告)
|
4月前
|
DataWorks 算法 调度
B端算法实践问题之配置脚本以支持blink批处理作业的调度如何解决
B端算法实践问题之配置脚本以支持blink批处理作业的调度如何解决
51 1
|
4月前
|
机器学习/深度学习 算法 Java
算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法
这篇文章介绍了基于贪婪技术思想的Prim算法和Dijkstra算法,包括它们的伪代码描述、Java源代码实现、时间效率分析,并展示了算法的测试用例结果,使读者对贪婪技术及其应用有了更深入的理解。
算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法