C++课程设计杭电题目(下)

2076.夹角有多大(题目已修改,注意读题)

题目描述

http://acm.hdu.edu.cn/showproblem.php?pid=2076

Problem Description

时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少。现在xhd知道的只有时间,请你帮他算出这个夹角。

注:夹角的范围[0,180],时针和分针的转动是连续而不是离散的。

Input

输入数据的第一行是一个数据T,表示有T组数据。
每组数据有三个整数h(0 <= h < 24),m(0 <= m < 60),s(0 <= s < 60)分别表示时、分、秒。

Output

对于每组输入数据,输出夹角的大小的整数部分。

运行代码

#include <iostream>
#include <cmath>
using namespace std;
int main() {int T;cin >> T;for (int i = 0; i < T; i++) {double h, m, s;cin >> h >> m >> s;h = h > 12 ? h - 12 : h;double H = h * 30.0 + m * 0.5 + 1.0 / 120.0 * s;double M = m * 6.0 + s * 0.1;double a = abs(H - M);a = a > 180 ? 360 - a : a;cout << (int)a << endl;}return 0;
}

代码思路

  1. 输入处理:首先,接收一个整数T,表示需要处理的测试用例数量。然后,对于每个测试用例,读入三个浮点数hms,分别代表小时、分钟和秒。

  2. 计算时针与分针的角度位置:

    • 由于一天有24小时,但时钟上两针的最大夹角不会超过180度(考虑一圈为360度,从一个数字到下一个数字为30度),因此如果输入的小时数大于12,说明是下午或晚上的时间,需要减去12来适应时钟计算(但这一步骤实际上对计算两针夹角不是必需的,因为后面计算时会以0-12小时制为基础进行转换)。
    • 计算时针的位置:每小时时针走30度,每分钟时针额外走0.5度(因为一小时60分钟,共走30度,所以每分钟0.5度),再加上每秒钟时针微小的移动,即1/120度(因为一分钟时针走0.5度,60秒走完这0.5度,所以一秒走1/120度)。
    • 计算分针的位置:每分钟分针走6度,加上每秒走0.1度(因为一分钟走6度,60秒走完这6度)。
  3. 计算两针夹角:计算两针相对于12点位置的角度差a,取绝对值,即abs(H - M)。如果这个差值大于180度,说明我们计算的是“外侧”夹角,实际“内侧”夹角应该是360度减去这个差值,即360 - a

  4. 输出结果:将计算得到的两针之间的最小角度转换为整数并输出。

综上,该程序实现了根据给定的时间计算时针与分针之间的最小角度差的功能。注意,代码中直接对小时数进行h > 12 ? h - 12 : h的处理其实对于最终计算角度是多余的,因为计算角度时直接根据0-12小时制就能正确反映实际情况。

2077.汉诺塔IV

题目描述

http://acm.hdu.edu.cn/showproblem.php?pid=2077

Problem Description

还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到小盘的上面。xhd在想如果我们允许最大的盘子放到最上面会怎么样呢?(只允许最大的放在最上面)当然最后需要的结果是盘子从小到大排在最右边。

Input

输入数据的第一行是一个数据T,表示有T组数据。
每组数据有一个正整数n(1 <= n <= 20),表示有n个盘子。

Output

对于每组输入数据,最少需要的摆放次数。

运行代码

#include <iostream>
using namespace std;
long long FN(int n, int e) {long long m = 1;for (int i = 1; i <= e; ++i) {m *= n;}return m;
}
int main() {int n;cin >> n;while (n--) {int N;while (cin >> N) {cout << FN(3, N - 1) + 1 << endl;}}return 0;
}

代码思路

  1. 定义计算函数 FN(int n, int e):这个函数接收两个整数参数:n 和 e。函数内部通过一个循环计算 n 的 e 次方(即 n 乘以自身 e 次)。这是通过初始化一个长整型变量 m 为 1,然后在循环中不断将 m 乘以 n 来实现的。循环结束后,返回计算得到的 n 的 e 次方值。

  2. 主函数 main():首先,读取一个整数 n,表示接下来将有多少组输入数据。然后,进入一个 while 循环,该循环会运行 n 次,处理每组输入数据。在这内部,使用另一个 while 循环持续读取整数 N,直到遇到文件结束或者输入错误等停止条件(注意,这里没有明确的停止条件来终止内部循环,理论上会一直等待输入直到程序外部干预)。对于每读取到的一个 N 值:最后输出这个计算结果。然后将计算结果加 1。调用之前定义的 FN 函数计算 3 的 (N - 1) 次方。主函数结束后,程序返回 0,表示正常退出。

功能解释: 本质上,对于每组输入的 N,程序计算并输出的是 3^(N-1) + 1 的值。

2078.复习时间

题目描述

http://acm.hdu.edu.cn/showproblem.php?pid=2078

Problem Description

为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑。xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为100和这门课的难度差的平方。xhd这学期选了n门课,但是一晚上他最多只能复习m门课,请问他一晚上复习的最高效率值是多少?

Input

输入数据的第一行是一个数据T,表示有T组数据。
每组数据的第一行是两个整数n(1 <= n <= 40),m(1 <= m <= n)。
接着有n行,每行有一个正整数a(1 <= a <= 100),表示这门课的难度值。

Output

对于每组输入数据,输出一个整数,表示最高效率值。

运行代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {int t;cin >> t;while (t--) {int n, m;cin >> n >> m;vector<int> s(n);for (int i = 0; i < n; i++) {cin >> s[i];}sort(s.begin(), s.end());cout << (100 - s[0]) * (100 - s[0]) << endl;}return 0;
}

代码思路

  1. 输入处理:首先,读取一个整数t,表示有t组测试用例。使用while (t--)循环来处理每一组测试用例。

  2. 每组测试用例处理:对于每组测试用例,先读取两个整数nm,其中n表示接下来要输入的整数个数,而m在这个程序中没有实际用途。定义一个大小为n的vector s来存储这n个整数。使用一个循环读取这n个整数,并将它们存入vector s中。

  3. 数据处理:使用sort(s.begin(), s.end())对vector s中的元素进行升序排序。计算排序后序列中第一个元素(即最小元素)与100的差的平方,公式为(100 - s[0]) * (100 - s[0])。输出这个计算结果。

  4. 循环结束与程序终止:当所有测试用例处理完毕后,程序结束并返回0,表示正常退出。

2079.选课时间

题目描述

http://acm.hdu.edu.cn/showproblem.php?pid=2079

Problem Description

又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合。你来帮帮他吧。(xhd认为一样学分的课没区别)

Input

输入数据的第一行是一个数据T,表示有T组数据。
每组数据的第一行是两个整数n(1 <= n <= 40),k(1 <= k <= 8)。
接着有k行,每行有两个整数a(1 <= a <= 8),b(1 <= b <= 10),表示学分为a的课有b门。

Output

对于每组输入数据,输出一个整数,表示学n个学分的组合数。

运行代码

#include <iostream>
#include <vector>
using namespace std;
int dp[41][41];
int main() {int T;cin >> T;while (T--) {int n, k;cin >> n >> k;vector<pair<int, int>> c(k);for (int i = 0; i < k; i++) {int a, b;cin >> a >> b;c[i] = { a, b };}for (int i = 0; i <= n; i++) {for (int j = 0; j <= k; j++) {dp[i][j] = 0;}}dp[0][0] = 1;for (int i = 0; i < k; i++) {for (int j = 0; j <= n; j++) {for (int l = 0; l <= c[i].second && j + l * c[i].first <= n; l++) {dp[j + l * c[i].first][i + 1] += dp[j][i];}}}cout << dp[n][k] << endl;}return 0;
}

代码思路

  1. 输入处理:首先,读入测试用例的总数T。对于每个测试用例,读入总学分n和物品(课程)种类数k。然后,读入每种物品(硬币)的价值和对应的数量

  2. 初始化DP表:

    • 初始化一个二维数组dp,其中dp[i][j]表示在前j种物品中选取总价值恰好为i的组合数。数组的大小为(n+1) x (k+1),其中dp[0][0]初始化为1,表示没有任何物品时,总价值为0有一种方式(即不选任何物品)。
  3. 动态规划转移:通过三层循环进行动态规划状态转移:外层循环遍历所有物品(课程)种类i(从0到k-1)。中层循环遍历所有可能的总金额j(从0到n)。内层循环遍历当前物品(课程)可以使用的数量l(从0到其最大使用数量,即保证总金额不超过n且不超过该课程总学分的限制),并更新dp[j + l*c[i].first][i + 1],即将当前物品使用l个时,能够达到的新总金额的组合数累加到对应的状态上。

  4. 输出结果:对于每个测试用例,最终答案是dp[n][k],即所有物品都考虑过时,总学分为n的组合数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/22778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南卡、韶音、Cleer、漫步者开放式耳机好用吗?最强开放式耳机对比揭秘!

在挑选开放式耳机时&#xff0c;个人经验和实际需求应当优先考虑&#xff0c;而非盲目追随潮流或品牌效应。投资耳机前务必慎重&#xff0c;毕竟高价值商品若无法退换&#xff0c;难免造成遗憾。为了帮助大家做出更加明智的决策&#xff0c;我亲自出资购买并测试了市面上多款主…

重生奇迹mu魔剑士

1、魔剑士低端装备-SF10(升级)亚特传说等S-S(PK)亚特奔雷魔神等。评价:优越的极品双属卓越,极其高的性价比,造福穷人玩家的装。 2、中端装备(只适合力魔剑士)-SF10S-S天魔斗神评价&#xff1a;与低级亚特等一样不过由于成本,装备PVP属性等原因,价钱稍贵点。 3、中端套装(只适合…

使用Python实现深度学习模型:序列到序列模型(Seq2Seq)

序列到序列&#xff08;Seq2Seq&#xff09;模型是一种深度学习模型&#xff0c;广泛应用于机器翻译、文本生成和对话系统等自然语言处理任务。它的核心思想是将一个序列&#xff08;如一句话&#xff09;映射到另一个序列。本文将详细介绍 Seq2Seq 模型的原理&#xff0c;并使…

49.字母异位词分组

49.字母异位词分组 /*** param {string[]} strs* return {string[][]}*/ var groupAnagrams function(strs) {const map new Object;for(let str of strs){let arr new Array(26).fill(0);for(let s of str){arr[s.charCodeAt() - a.charCodeAt()];}//数组直接作为对象的键…

【Web API DOM08】事件汇总(加载事件、滚动事件)

一&#xff1a;页面加载事件 1 概述&#xff1a; 页面加载指加载外部资源&#xff08;如图片、外联CSS和JavaScript等&#xff09;加载完毕时&#xff0c;触发事件 2 load事件 监听页面所有资源加载完毕 //页面加载事件 //window 对象表示一个包含 DOM 文档的窗口 window.…

【阿里前端面试题】聊聊前端性能优化的方案,解决过什么样的性能问题?

大家好&#xff0c;我是“寻找DX3906”。每天进步一点。日积月累&#xff0c;有朝一日定会厚积薄发&#xff01; 前言&#xff1a; 前面已经和大家分享了4篇面试题&#xff1a; 《【阿里前端面试题】浏览器的加载渲染过程》 《【阿里前端面试题】客户端和服务器交互&#xff…

IO流----字节流

字节流 字节流&#xff1a;操作&#xff1a;文件字节输入输出流 &#xff1a;写入数据&#xff1a;读取数据&#xff1a;文件拷贝&#xff1a; 带缓冲区的字节输入输出流&#xff1a;拷贝文件&#xff1a;写入数据&#xff1a;读取数据: 深入 带缓冲区的字节输出流 &#xff1a…

Java线程池execute和submit的区别

前言 ThreadPoolExecutor提供了两种方法来执行异步任务&#xff0c;分别是execute和submit&#xff0c;也是日常开发中经常使用的方法&#xff0c;那么它俩有什么区别呢&#xff1f; 语义不同 首先是语义上的不同。execute声明在Executor接口&#xff0c;它接受一个Runnable…

【论文阅读】Point2RBox (CVPR’2024)

paper:https://arxiv.org/abs/2311.14758 code:https://github.com/yuyi1005/point2rbox-mmrotate

阿里云sls 采集日志安装记录

参考阿里云给的安装文档 阿里云安装Logtail组件 注意这里&#xff0c;选择地域&#xff0c;是中国地域选中国&#xff0c;海外选海外即可 按照文档继续下去 修改配置文件./alibaba-cloud-log-all/values.yaml 所有的操作完成后&#xff0c;去控制台配置 以上操作的前提是…

[WWW2024]轻量数据依赖的异常检测重训练方法LARA

开篇 近日&#xff0c;由阿里云计算平台大数据基础工程技术团队主导&#xff0c;与浙江大学合作的论文《LARA: ALight and Anti-overfitting Retraining Approach for Unsupervised Time Series Anomaly Detection 》被WWW2024收录&#xff0c;该方法解决了云服务正常模式随时…

探索AIGC降重工具:确保论文原创性的新策略

如何有效降低AIGC论文的重复率&#xff0c;也就是我们说的aigc如何降重&#xff1f;AIGC疑似度过高确实是个比较愁人的问题。如果你用AI帮忙写了论文&#xff0c;就一定要在交稿之前做一下AIGC降重的检查。一般来说&#xff0c;如果论文的AIGC超过30%&#xff0c;很可能会被判定…

申请医疗设备注册变更时,需要补充考虑网络安全的情况有哪些?

在申请医疗器械设备注册变更时&#xff0c;需要补充网络安全的情况主要包括以下几点&#xff1a; 网络安全功能更新&#xff1a;如果医疗器械的自研软件发生网络安全功能更新&#xff0c;或者合并网络安全补丁更新的情形&#xff0c;需要单独提交一份自研软件网络安全功能更新…

#02 安装指南:如何配置Stable Diffusion环境

文章目录 前言前置条件第1步&#xff1a;安装Python和PIP第2步&#xff1a;创建虚拟环境第3步&#xff1a;安装PyTorch和CUDA第4步&#xff1a;安装Stable Diffusion相关库第5步&#xff1a;测试环境结论 前言 在之前的文章中&#xff0c;我们介绍了Stable Diffusion基础入门和…

【ARFoundation自学04】AR Tracked Image 图像追踪识别

1.添加组件 2.创建图像识别库 3.创建识别后追踪的物体&#xff08;UI、模型等&#xff09;

Java驱动的工程项目管理系统:实现高效协作与精准管理

在工程行业的现代管理实践中&#xff0c;有效地协同工作和信息共享对于提高工作效率和降低成本至关重要。本文将深入探讨一款基于Java技术的工程项目管理系统&#xff0c;该系统采用前后端分离的架构&#xff0c;功能全面&#xff0c;旨在满足不同角色的需求&#xff0c;从项目…

go语言切片去重的3种方式总结

go语言中的切片是使用非常频繁的一个数据结构&#xff0c;对于他的去重&#xff0c;我们可以有以下3种方式 1. 切片slice去重 利用map的key不能重复的特性append函数 一次for循环搞定 这个模式时间复杂度最低&#xff0c;效率最高&#xff0c; 如果go版本大于1.21推荐使用这…

PlugLink与RPA的完美结合:打造智能自动化工作流(附源码)

PlugLink与RPA的完美结合&#xff1a;打造智能自动化工作流 自动化技术已经成为提高效率和减少错误的关键手段。两种主要的自动化技术——PlugLink和RPA&#xff08;机器人流程自动化&#xff09;——各有特色。本文将详细探讨PlugLink与RPA的不同之处&#xff0c;并介绍它们如…

软件测试需求管理指南规范(Word原件,项目管理全资料)

3 测试需求 3.1 测试范围 3.2 测试目标 4 测试需求的现状 5 测试需求的内容 5.1 主体内容 5.2 管理内容 6 测试需求的制定 6.1 需求信息来源 6.2 需求分析 6.2.1 功能性需求 6.2.2 系统功能需求 6.2.3 界面需求 6.2.4 安装需求 6.2.5 业务需求 6.2.6 非功能性需求 6.2.7 性能需…

ai怎么导出jpg?让我告诉你答案【详】

在设计和创意工作中&#xff0c;Adobe Illustrator&#xff08;AI&#xff09;是一款不可或缺的工具。然而&#xff0c;当我们将设计作品导出为JPG格式时&#xff0c;可能会遇到一些问题。ai怎么导出jpg&#xff1f;如何确保导出的JPG图片保持高质量&#xff1f;接下来&#xf…