23.第几天?

基础数学 - 日期 - 闺年判定

Problem-2005

Problem Description

给定一个日期,输出这个日期是该年的第几天。

Input

输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。

Output

对于每组输入数据,输出一行,表示该日期是该年的第几天。

Sample Input

1985/1/20

2006/3/12

Sample Output

20

71

 知识点:

闰年的判断:满足其中一个条件就行

①被4整除且被100整除

②被400整除

c++11特性,stl容器可用{}初始化

易错点:

sum初始值

循环变量i < month

eg:1月20日,20(day)+0(monthday[0])

#include <iostream>
using namespace std;
#include <vector>

bool IsLeapYear(int year)
{
	if (year / 4 == 0 && year / 100 == 0)
		return true;
	if (year / 400 == 0)
		return true;

	return false;
}
int main()
{
	vector<int> monthday = {0,31,28,31,30,31,30,31,31,30,31,30,31};
	int year, month, day;
	char c;
	while (cin >> year >> c >> month >> c >> day)
	{
		if (IsLeapYear(year))
		{
			monthday[2] = 29;
		}
		else
		{
			monthday[2] = 28;
		}

		int sum = day;
		for (int i = 1; i < month; i++)
		{
			sum += monthday[i];
		}
		cout << sum << endl;
	}
	return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 输入为连续九个小时的PM2.5浓度,输出为第十个小时的PM2.5浓度预测值。需要输入第十个小时的预测值是因为在实际应用中需要不断进行预测和更新,而预测值可以作为下一次预测的输入。 2. 数据预处理包括以下几个步骤: - 去除无效数据:对于缺失数据或异常值,可以进行插值或删除。 - 归一化:将数据缩放到0-1范围内,可以使用最小-最大值归一化或标准化方法。 - 数据重构:将9个小时的PM2.5浓度作为输入特征,第十个小时的PM2.5浓度作为标签,构造训练数据。 3. 对于这个问题,可以使用循环神经网络(RNN)或卷积神经网络(CNN)等模型进行预测。这里我们选择使用LSTM模型。 4. 损失函数一般使用均方误差(MSE)。 下面是相应的Python代码实现: ```python import pandas as pd import numpy as np from keras.models import Sequential from keras.layers import Dense, LSTM, Dropout from keras.optimizers import Adam from sklearn.preprocessing import MinMaxScaler # 读取数据 df = pd.read_csv('train.csv') # 数据预处理 df.drop(['No'], axis=1, inplace=True) # 去除无效列 df.replace('NR', 0, inplace=True) # 将NR替换为0 df = df.astype('float') # 转换数据类型为float df = df.values # 转换为numpy数组 # 分离训练集和测试集 train_days = 20 * 12 # 前240天作为训练集 train_data = df[:train_days*24,:] # 每天24个时间点 test_data = df[train_days*24:,:] # 后120天作为测试集 # 归一化 scaler = MinMaxScaler() train_data = scaler.fit_transform(train_data) test_data = scaler.transform(test_data) # 数据重构 def build_train_data(data, n_hours): X, y = [], [] for i in range(data.shape[0]-n_hours): X.append(data[i:i+n_hours,:-1]) y.append(data[i+n_hours,-1]) return np.array(X), np.array(y) n_hours = 9 # 连续9个小时作为输入 train_X, train_y = build_train_data(train_data, n_hours) test_X, test_y = build_train_data(test_data, n_hours) # 建立LSTM模型 model = Sequential() model.add(LSTM(units=50, input_shape=(train_X.shape[1], train_X.shape[2]), return_sequences=True)) model.add(Dropout(0.2)) model.add(LSTM(units=50, return_sequences=True)) model.add(Dropout(0.2)) model.add(LSTM(units=50)) model.add(Dropout(0.2)) model.add(Dense(units=1)) # 编译模型 optimizer = Adam(learning_rate=0.001) model.compile(optimizer=optimizer, loss='mean_squared_error') # 训练模型 model.fit(train_X, train_y, epochs=50, batch_size=72, validation_data=(test_X, test_y)) # 预测数据 y_pred = model.predict(test_X) # 反归一化 y_pred = scaler.inverse_transform(y_pred) test_y = scaler.inverse_transform(test_y.reshape(-1,1)) # 计算MSE mse = np.mean((y_pred-test_y)**2) print('MSE:', mse) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值