結果
| 問題 |
No.721 Die tertia (ディエ・テルツィア)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-08-11 15:05:19 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,499 bytes |
| コンパイル時間 | 1,549 ms |
| コンパイル使用メモリ | 199,212 KB |
| 最終ジャッジ日時 | 2025-01-06 12:18:47 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 |
コンパイルメッセージ
main.cpp: In function ‘std::tuple<int, int, int> next_day(int, int, int)’:
main.cpp:56:1: warning: control reaches end of non-void function [-Wreturn-type]
56 | }
| ^
ソースコード
#include <bits/stdc++.h>
using namespace std;
tuple<int, int, int> parse_date(string &S){
int y, m, d;
y = (S[0]-'0') * 1000 + (S[1]-'0') * 100 + (S[2]-'0') * 10 + S[3] - '0';
m = (S[5]-'0') * 10 + (S[6]-'0');
d = (S[8]-'0') * 10 + (S[9]-'0');
return {y, m, d};
}
bool isLeap(int y){
if (y % 4) return false;
if (y % 400 == 0) return true;
if (y % 100 == 0) return false;
return true;
}
tuple<int, int, int> next_day(int y, int m, int d){
if (d < 28){
return {y, m, d + 1};
}
if (d == 28){
if (m != 2){
return {y, m, d + 1};
}else{
if (isLeap(y)){
return {y, m, d + 1};
}else{
return {y, 3, 1};
}
}
}
if (d == 29){
if (m == 2){
return {y, 3, 1};
}else{
return {y, m, d + 1};
}
}
if (d == 30){
if (m == 4 or m == 6 or m == 9 or m == 11){
return {y, m + 1, 1};
}else{
return {y, m, 31};
}
}
if (d == 31){
if (m == 12){
return {y + 1, 1, 1};
}else{
return {y, m + 1, 1};
}
}
}
int main() {
string S;
cin >> S;
auto [y, m, d] = parse_date(S);
tie(y, m, d) = next_day(y, m, d);
tie(y, m, d) = next_day(y, m, d);
cout << y << '/' << setfill('0') << setw(2) << right << m << '/' << setfill('0') << setw(2) << right << d << endl;
return 0;
}