题目1:【收集金币】问题 假设每天都能人院子挖出【20】 枚金币,然后在第二天利用魔法炉用这20枚金币炼出【10】 枚魔法金币,每周都有乌鸦偷走 [31枚金币。问一年后宝物箱中有多少金币? 【提示】:1年按【3651 天计算,计算周数可以使用整除运算完成。
时间: 2023-05-25 12:02:50 浏览: 147
每天能够挖出的金币数为20枚,炼出的魔法金币数为10枚,所以每天净增加的金币数为10枚。
每周有乌鸦偷走31枚金币,所以一年有52周乌鸦会偷走52*31=1612枚金币。
一年总共有365天,去掉52周,还剩下313天。这些天里面有一天是不能生产魔法金币的,即第二天不能生产,所以在313天里可以生产313*10=3130枚魔法金币。
因为每产出10枚魔法金币需要用20枚金币,所以一年共需要产出3130*2=6260枚金币。
一年净增加的金币数为10 * 365 - 1612 = 2038 枚,即一年中宝物箱中金币的总数为6260 + 2038 = 8298枚。
相关问题
1.数据库构建:以3次打药和2次失血进行举例,大家需将20210322.txt内容(失血或打药次数,每次开始结束时间)转换为小型数据库,方便后期读取,变量,矩阵,结构体等格式不限。 2.数据截取,读取自行构造的数据库,根据数据库中每次开始结束时间节点和原数据中第一列的时间对数据进行截取,可以利用代码一次性截取所有片段,也可以选择需要对特定片段进行截取,如需要放血第二次数据,可根据数据库信息仅截取放血第二次数据,其他数据不截取。对个截取的数据段进行保存(为方便检验,数据段命名格式统一为Drug_first_segment、Drug_second_segment和Bloodloss_first_segment、Bloodloss_second_segment,依次类推) 注意:因为每次失血和打药次数是随机的,因此1-2部分要求利用matlab代码自动实现,第2部分的截取过程不能人为设置开始结束时间,必须都是从第1部分自行构建的数据库中读取然后自动进行截取。
1. 数据库构建:
首先需要读取文本文件内容,并将其转换为一个结构体数组。假设文本文件中的内容格式为:
```
2021-03-22 08:00:00, Drug, Start
2021-03-22 08:10:00, Drug, End
2021-03-22 10:00:00, Bloodloss, Start
2021-03-22 10:30:00, Bloodloss, End
2021-03-22 13:00:00, Drug, Start
2021-03-22 13:30:00, Drug, End
2021-03-22 16:00:00, Bloodloss, Start
2021-03-22 16:30:00, Bloodloss, End
```
则可以使用如下代码将其转换为一个结构体数组:
```matlab
% 读取文本文件内容
fileID = fopen('20210322.txt','r');
formatSpec = '%s %s %s';
data = textscan(fileID, formatSpec, 'Delimiter', ', ');
fclose(fileID);
% 构建数据库
num_events = length(data{1});
for i = 1:num_events
db(i).time = datetime(data{1}{i}, 'InputFormat', 'yyyy-MM-dd HH:mm:ss');
db(i).type = data{2}{i};
db(i).status = data{3}{i};
end
```
这样就可以将原始数据转换为一个名为`db`的结构体数组,其中每个元素包含了一次失血或打药的开始结束时间和类型。
2. 数据截取:
根据构建好的数据库`db`,可以使用如下代码对原始数据进行截取:
```matlab
% 读取原始数据
data = load('data.mat');
% 遍历数据库,截取数据
for i = 1:length(db)
type = db(i).type;
status = db(i).status;
if strcmp(status, 'Start')
start_time = db(i).time;
else
end_time = db(i).time;
segment_name = [type, '_', status, '_segment'];
segment_data = data.data(data.time >= start_time & data.time <= end_time, :);
assignin('base', segment_name, segment_data);
end
end
```
这段代码会将原始数据`data`按照数据库中的每一次失血或打药进行截取,并将截取到的数据保存在一个变量中。`assignin('base', segment_name, segment_data)`这一行代码会将截取到的数据保存在工作空间中,变量名为`segment_name`。例如,对于第一次打药,截取到的数据会被保存在变量`Drug_first_segment`中。
这样就可以实现自动截取数据,并将截取到的数据保存在工作空间中,方便后续的处理和分析。
阅读全文