当前位置: 首页 > news >正文

C/C++算法入门 | 简单模拟

不爱生姜不吃醋⭐️
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!

文章目录

  • 🌴前言
  • 🌴一、害死人不偿命的(3n+1)猜想
    • 1.题目(PAT B1001)
    • 2.思路
    • 3.代码实现
  • 🌴二、挖掘机技术哪家强
    • 1.题目(PAT B1032)
    • 2.思路
    • 3.代码实现
  • 🌴总结


🌴前言

本文内容是关于C/C++算法入门的简单模拟题,没有涉及很复杂的算法,主要考察代码能力。模拟是一类“题目怎么说,你就怎么做”的题目,如果实现起来不太麻烦,就可以称之为“简单模拟”。这类题目不涉及算法,完全知识根据题目描述来进行代码的编写,所以考察的是代码能力。本文算法为:害死人不偿命的(3n+1)猜想和挖掘机技术哪家强。


🌴一、害死人不偿命的(3n+1)猜想

1.题目(PAT B1001)

题目描述

卡拉兹猜想:
对任何一个自然数n,如果它是偶数,那么就把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这一猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很荒唐······
在此处并非想要证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n,简单数一下,需要多少步才能得到n=1?

输入格式

每个测试输入包含1个测试用例,即给出自然数n的值。

输出格式

输出从n计算到1需要的步数

输入样例

3

输出样例

5

2.思路

  1. 首先对输入进行判断,如果是1,直接return 0
  2. 如果不是1,再进while循环判断奇偶
  3. 偶数直接除2
  4. 奇数先运算再除2
  5. 运算完的数再进行判断
  6. 每执行一次循环,计数器就加一

3.代码实现

#include <cstdio>int stepNum(int a){if(a == 1){return 0;}int num = 0;while (a != 1){if(a % 2 == 0){a /= 2;}else{a = (a * 3 + 1) / 2;}num++;}return num;
}int main(){int a;scanf("%d", &a);int num = stepNum(a);printf("%d", num);return 0;
}

🌴二、挖掘机技术哪家强

1.题目(PAT B1032)

题目描述

为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。请根据比赛结果统计出技术最强的那个学校。

输入格式

在第一行给出不超过10^5的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)及其比赛成绩(百分制),中间以空格分隔。

输出格式

在一行中给出总得分最高的学校的编号及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

输入样例

6
3 65
2 80
1 100
2 70
3 40
3 0

输出样例

2 150

2.思路

  1. 先确定参赛人数,由参赛人数来确定可以有几个得分
  2. 定义数组,把每个相同学校的得分相加
  3. 最终确定最高分和最高分的学校

3.代码实现

#include <cstdio>
#include <cmath>const int N = pow(10,5);
int main(){int schID, score;int num;scanf("%d", &num);if(num > N){printf("参赛人数超出限制!");exit;}int gameNum[num] = {0};for (int i = 0; i < num; i++){scanf("%d%d",&schID, &score);gameNum[schID] += score; }int MAX = 0;int ID;for (int i = 0; i < num; i++){if (gameNum[i] > MAX){MAX = gameNum[i];ID = i;}}printf("%d %d", ID, MAX);return 0;
}

🌴总结

文章中代码的编写使用的都是C/C++基础知识,多加练习熟能生巧。
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


http://www.lryc.cn/news/172078.html

相关文章:

  • stm32学习-芯片系列/选型/开发方式
  • mnist数据集
  • Java之IO概述以及
  • Spring WebFlux—Reactive 核心
  • 由于找不到d3dx9_43.dll,无法继续执行代码要怎么解决
  • git安装配置教程
  • 要如何选择报修工单管理系统?需要注意哪些核心功能?
  • 面对大数据量渲染,前端工程师如何保证页面流畅性?
  • 2023年浙工商MBA新生奖学金名单公布,如何看待?
  • 关于时空数据的培训 GAN:实用指南(第 02/3 部分)
  • UNIAPP利用canvas绘制图片和文字,并跟随鼠标移动
  • 【智能电表数据接入物联网平台实践】
  • Docker--network命令的用法
  • 优维低代码实践:图片和搜索
  • [Qt]控件
  • GEE:快速实现时间序列线性趋势和变化敏感性计算(斜率、截距)以NDVI时间序列为例
  • LC1713. 得到子序列的最少操作次数(java - 动态规划)
  • vr飞机驾驶舱模拟流程3D仿真演示加大航飞安全法码
  • 一、八大排序(sort)
  • 【AWS】AI 代码生成器—Amazon CodeWhisperer初体验 | 开启开挂编程之旅
  • 【Mysql主从配置方法---单主从】
  • ⼀⽂读懂加密资产交易赛道的新锐⼒量Bitdu
  • 万里牛与金蝶云星空对接集成查询调拨单连通调拨单新增(万里牛调拨单-金蝶【直接调拨单】)
  • 虚拟DOM与diff算法
  • K8S:pod资源限制及探针
  • CSS中的定位
  • 二、链表(linked-list)
  • Android EditText筛选+选择功能开发
  • Linux 信号 alarm函数 setitimer函数
  • 自主设计,模拟实现 RabbitMQ - 实现发送方消息确认机制