HDU_2021 发工资咯:)

本文介绍了一个简单的C++程序,用于计算发放工资时,在不找零的情况下,至少需要准备多少张不同面额的人民币。该程序通过分解工资数额到百元、五十元等面额来实现。

这个是求发工资的时候,在不找钱的情况下至少要准备多少张人民币

用了比较笨的方法,但是比较简单,没什么技术可言

以下是代码:

#include <stdio.h>
#include <iostream>

using namespace std;

int main()
{
	int n, a[100];
	while (cin >> n)
	{
		if (n == 0)  break;
		else
		{
			int count = 0, s1, s2, s3, s4, s5, s6;
			for (int i = 0; i < n; i ++)
			{
				cin >> a[i];
				s1 = a[i] / 100;
				s2 = (a[i] - s1 * 100) / 50;
				s3 = (a[i] - s1 * 100 - s2 * 50) / 10;
				s4 = (a[i] - s1 * 100 - s2 * 50 - s3 * 10) / 5;
				s5 = (a[i] - s1 * 100 - s2 * 50 - s3 * 10 - s4 * 5) / 2;
				s6 = a[i] - s1 * 100 - s2 * 50 - s3 * 10 - s4 * 5 - s5 * 2;
				count = count + s1 + s2 + s3 + s4 + s5 + s6;
			}
			
			cout << count << endl;
		}
	}
	
    return 0; 
}

### HDU 实验二 Linux 内核编程教程或示例代码 #### 一、KSM (Kernel Samepage Merging) 的介绍 Linux 系统中的 KSM 是一种内存优化技术,它允许内核合并具有相同内容的匿名页面。这种功能对于虚拟机环境特别有用,因为它能够减少多个虚拟机实例之间的重复内存占用[^1]。 以下是实现 KSM 功能的一个简单模块加载和卸载脚本: ```bash #!/bin/bash # 加载 KSM 模块 sudo modprobe ksmd # 启动 KSM 服务 echo 1 | sudo tee /sys/kernel/mm/ksm/run # 设置扫描周期(单位:毫秒) echo 100 | sudo tee /sys/kernel/mm/ksm/sleep_millisecs # 查看当前已合并页数 cat /sys/kernel/mm/ksm/pages_shared ``` 通过上述脚本可以启用并监控 KSM 的工作情况。 --- #### 二、编译 Linux 内核的过程概述 为了完成实验任务,可能需要重新配置和编译 Linux 内核。这通常涉及以下操作步骤(基于引用描述): 1. **切换到源码根目录** 进入解压后的 Linux 内核源码路径。 2. **运行 `make menuconfig` 命令** 使用该命令打开图形化的菜单界面来定制内核选项。完成后保存 `.config` 文件即可退出。 3. **执行实际编译流程** 输入 `make` 开始构建目标镜像文件以及必要的驱动程序模块[^4]。 下面是一个简单的 Makefile 配置片段用于自定义模块开发: ```Makefile obj-m += my_module.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean ``` 此模板适用于编写小型 LKM(Loadable Kernel Module),便于测试新特性或者修复特定问题。 --- #### 三、NIO 编程基础回顾 如果实验还涉及到 Java NIO,则需熟悉其三大核心概念——Channels、Buffers 和 Selectors。这些工具提供了更高效的 I/O 处理方式,在多路复用场景下表现尤为突出[^5]。 举个例子来说,利用 FileChannel 可以快速复制大文件而无需频繁读写缓冲区: ```java import java.nio.file.*; import java.io.IOException; public class CopyFile { public static void main(String[] args) throws IOException { Path source = Paths.get("source.txt"); Path target = Paths.get("target.txt"); try (FileChannel inChannel = FileChannel.open(source, StandardOpenOption.READ); FileChannel outChannel = FileChannel.open(target, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) { long position = 0; long count = inChannel.size(); while(position < count){ position += inChannel.transferTo(position, count-position,outChannel); } } catch(IOException e){ System.err.println(e.getMessage()); } } } ``` 以上展示了如何借助 transfer 方法高效传输数据流。 --- #### 四、总结说明 综合来看,针对 HDU 实验二的要求,重点在于掌握 Linux 下面向底层的操作技巧,比如修改系统参数、调试硬件接口或是增强性能等方面的知识点。同时也要注意结合理论学习成果应用于实践当中去验证效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值