写点什么

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

作者:清风莫追
  • 2022 年 10 月 09 日
    湖南
  • 本文字数:1129 字

    阅读完需:约 4 分钟

个人主页:CSDN清风莫追这里推荐一款面试、刷题神器:牛客网:👉点击加入刷题大军👈




@[TOC]



第一题:轮流报数

1.题目

有 5 个人 A,B,C,D,E 玩一个游戏,规则如下:从 1 开始 5 人轮流报数,如果遇到 7 的倍数或者含有 7 的数字则跳过.当报完 N 个数后(不包括跳过的数)结束游戏。统计游戏中每个人各跳过了几个数。输入:输入一行,包含一个正整数 N 输出:输出 6 行,前 5 行每行有一个整数,表示 A,B,C,D,E 在游戏中跳过了的数的个数。第 6 行一个整数表示游戏结束时最后一个报的数样例 1 输入 20 样例 1 输出 1201024 样例解析游戏过程为:A:1,B:2,C:3,D:4,E:5A:6,B:跳过,C:8,D:9,E:10A:11,B:12,C:13,D:跳过,E:15A:16,B:跳过,C:18,D:19,E:20A:跳过,B:22,C:23,D:24D 报出 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.成功通过



第二题:鸡兔同笼

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.运行结果




个人主页:CSDN清风莫追

推荐一款面试、刷题神器牛客网:👉点击加入刷题大军👈


感谢阅读

发布于: 刚刚阅读数: 3
用户头像

清风莫追

关注

还未添加个人签名 2022.08.09 加入

编程一学生

评论

发布
暂无评论
【算法作业】实验一:轮流报数与鸡兔同笼_清风莫追_InfoQ写作社区