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

#C语言——刷题攻略:牛客编程入门训练(六):运算(三)-- 涉及 辗转相除法求最大公约数

🌟菜鸟主页:@晨非辰的主页

👀学习专栏:《C语言刷题合集》

💪学习阶段:C语言方向初学者

名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。"


目录

1. 牛牛的球

2.  小乐乐排电梯

4. 小乐乐改数字

5.  KiKi算期末成绩

6. BC47 (a+b-c)*d的计算问题


前言:在学习编程语言的同时,千万别忘了刷刷题来巩固一下学到的知识,对于牛客网_编程入门系列,小子会持续更新分享刷题过程,其中包括一些基础板块的题目,本次将呈现的运算章节,共6道题。有几道题需要一点思考,大家开开胃~~

~~注意部分标题括号内代表对题目涉及到的知识进行说明!

1. 牛牛的球

题目链接:牛客网_BC41 牛牛的球_中等

int main()
{int r = 0;//定义半径变量scanf("%d", &r);//键盘输入//公式计算体积float v = (4.0 / 3) * (3.14 * r * r * r);printf("%.2f\n", v);return 0;
}

解题思路:

--本题唯一要注意的点的是进行除法运算时,想要输出浮点数,就要保证至少一个操作数为浮点型。


2.  小乐乐排电梯

题目链接:牛客网_BC43 小乐乐排电梯_简单

int main()
{int num_of_people = 0;int minutes = 0;scanf("%d", &num_of_people);if (num_of_people < 11){minutes = 2;printf("%d\n", minutes);}else{minutes = (num_of_people / 12) * 4 + 2;printf("%d", minutes);}return 0;
}

解题思路:

--本题关键主要是分清楚人数走几回上下,分两种情况:一种是加上乐乐<=12,直接上;另一种:前面走几趟*4分钟,加上乐乐上的2分钟;图解如下:


题目链接:牛客网_BC44小乐乐与欧几里得_简单

--一般思路:但是这样运行效率较低

int main()
{long n = 0;long m = 0;scanf("%ld%ld", &n, &m);//求gcdlong gcd = 0;long i = 0;//判断minlong min = n < m ? n : m;for (i = min; i >= 1; i--){if (n % i == 0 && m % i == 0){gcd = i;break;}}//求lcm,因为 gcd * lcm = n * mlong lcm = n * m / gcd;//求和long sum = gcd + lcm;printf("%ld\n", sum);return 0;
}

--辗转相除法(欧几里得算法)

int main()
{long int n = 0;long int m = 0;long gcd = 0;while (scanf("%ld %ld", &n, &m) == 2){//保留原始值long i = n;long j = m;//辗转相除法while (m != 0){long tem = m;m = n % m;n = tem;}gcd = n;//求lcm,因为 gcd * lcm = n * mlong lcm = i * j / gcd;//求和long sum = gcd + lcm;printf("%ld\n", sum);}return 0;
}

解题思路——

--对于辗转相除法的好处就是,显著提升了代码运行效率,还有就是不用考虑输入数值的大小顺序,因为对于 b = a % b(如果a<b,就会将a赋值给b,后续操作将b赋值给a)就完成了大小数值的转换。 


4. 小乐乐改数字

题目链接:牛客网_BC45 小乐乐改数字_中等

int main()
{int num = 0;int last_num;int position = 1;//从个位开始int new_num = 0;int result = 0;scanf("%d", &num);while (num){//拿出最后一位数字last_num = num % 10;num /= 10;//消位//判断要求new_num = (last_num % 2 == 0) ? 0 : 1;//构建新数字result = new_num * position + result;position *= 10;//初始为1,每次*10进位}printf("%d\n", result);return 0;
}

解题思路——

--本题主要就是将数值进行取余获得最低位数字进行判断,但是判断不再使用一般思路的条件语句,改换成条件表达式更加简便、效率高;

        --对于判断后的数字重组,就可以将最低位数字乘上相应位数的数值,比如:各位*1、十位*10……,再进行相加即可得到。


5.  KiKi算期末成绩

题目链接:牛客网_BC 46KiKi算期末成绩_简单

int main() 
{int a = 0;int b = 0;int c = 0;int d = 0;scanf("%d%d%d%d", &a, &b, &c, &d);float sum_score = a * 0.2 + b * 0.1 + c * 0.2 + d * 0.5;printf("%.1f\n", sum_score);return 0;
}

解题思路——

--本题思路简单,只需注意成绩相对百分占比,小子嘴遁~


6. BC47 (a+b-c)*d的计算问题

题目链接:牛客网_BC47 (a+b-c)*d的计算问题-入门

int main() 
{int a = 0;int b = 0;int c = 0;int d = 0;scanf("%d%d%d%d", &a, &b, &c, &d);int result = (a + b - c) * d;printf("%d\n", result);return 0;
}

解题思路——

--小子还是那句话:这是一个非常简单的题目,意在考察你编程的基础能力。千万别想难了哦。嘴遁~~


相关刷题系列回顾 :

#C语言——刷题攻略:牛客编程入门训练(四):运算(一)

#C语言——刷题攻略:牛客编程入门训练(五):运算(二)-- 涉及 海伦公式、sqrt函数求三角形面积

结语:本篇文章就到此结束了,本文主要是练习有关运算的题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~ 

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

相关文章:

  • GPT OSS 双模型上线,百度百舸全面支持快速部署
  • 创建MyBatis-Plus版的后端查询项目
  • SQL Server 2019搭建AlwaysOn高可用集群
  • 模块 PCB 技术在未来通信领域的创新突破方向
  • Cisco 2018-2023年度互联网报告深度解析:数字化转型时代的网络发展趋势与战略洞察
  • kafka 为什么需要分区?分区的引入带来了哪些好处
  • SpringMVC(四)
  • 前后端日期交互方案|前端要传时间戳还是字符串?后端接收时是用Long还是Date还是String?
  • 机器学习 SVM支持向量机
  • 虚幻基础:场景actor与角色的碰撞
  • (0️⃣基础)程序控制语句(初学者)(第3天)
  • Javase-异常
  • Idea配置——build system的选项区别
  • SpringBoot激活指定profile的方式
  • 灰狼算法+四模型对比!GWO-CNN-LSTM-Attention系列四模型多变量时序预测
  • 《汇编语言:基于X86处理器》第12章 浮点数处理与指令编码(2)
  • 准确----SFTP新增用户
  • 三步完成,A100本地vLLM部署gpt-oss,并启动远程可访问api
  • 串口转以太网实战:S7-200驱动大棚温湿度监控、HMI与通风设备
  • Vue框架进阶
  • FPGA实现Aurora 64B66B数据回环传输,基于GTX高速收发器,提供2套工程源码和技术支持
  • 机器学习支持向量机(SVM)
  • 论文精读(二)| 开源软件漏洞感知技术综述
  • 深度学习·MAFT
  • Linux中的内核同步源码相关总结
  • 2025华数杯数学建模A题【 多孔膜光反射性能的优化与控制】原创论文分享
  • 提升LLM服务效率的秘密武器——vLLM!
  • 【MongoDB学习笔记2】MongoDB的索引介绍
  • [GESP202309 五级] 2023年9月GESP C++五级上机题题解,附带讲解视频!
  • 【具身智能】具身智能的革命——人形机器人如何重塑人类日常生活