Akari 题解分享 · 2024/4/9
蓝桥杯C/C++2015B组省赛——星系炸弹(结果填空)
AC 代码 ```cpp #include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { for (int year = 2000; year <= 2022; year ++ ) for (int month = 1; month <= 12; month ++ ) for (int day = 1; day <= 31; day ++ ) { if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12); else if (month == 2) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { if (day > 29) break; } else { if (day > 28) break; } } else { if (day > 30) break; } // 设置一个标志变量, 遍历到指定日期就更改标志量 int flag = 0, cnt = 0; if (year == 2014 && month == 11 && day == 9) flag = 1; if (flag == 1) cnt ++ ; // 遍历从 11.9 开始, 但是间隔的日期是从下一天开始算的, 所以是 1000 + 1 = 1001 if (cnt == 1001) cout << year << '-' << month << '-' << day << endl; } return 0; } ```
查看全文
1 0 0 279
sansmoster97 题解分享 · 2024/4/9
星系炸弹(结果填空) - 题解
其实不用写代码,用Excel里的日期函数就可以很好的解决这个问题。 2017-08-05
0 0 1 2
sayheee 题解分享 · 2024/4/10
星系炸弹(结果填空) - 题解
``` #include using namespace std; int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int main(){ int flag=0,sum=0; //模版套用 for(int year=2014;year<2024;year++){ for(int month=1;month<=12;month++){ for(int day=1;day<=31;day++){ if(month==2){ if((year%4==0&&year%100!=0) || year%400==0){ if(day>29) break; } else{ if(day>28) break; } } else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12); else{ if(day>30) break; } ``` ``` if(year==2014 &&month==11 &&day==9) //从 2014.11.9之后flag一直为1了,所以一直++ flag=1; ``` ``` if(flag==1) sum++; if(sum==1001) printf("%d-%02d-%02d",year,month,day); } } ``` ``` } return 0; } ```
查看全文
0 0 0 2
Akari 题解分享 · 2024/4/9
星系炸弹(结果填空) - 题解
AC 代码 ``` #include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { // 设置一个标志变量, 遍历到指定日期就更改标志量 int flag = 0, cnt = 0; for (int year = 2000; year <= 2022; year ++ ) for (int month = 1; month <= 12; month ++ ) for (int day = 1; day <= 31; day ++ ) { if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12); else if (month == 2) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { if (day > 29) break; } else { if (day > 28) break; } } else { if (day > 30) break; } if (year == 2014 && month == 11 && day == 9) flag = 1; if (flag == 1) cnt ++ ; // 遍历从 11.9 开始, 但是间隔的日期是从下一天开始算的, 所以 1001 if (cnt == 1001) cout << year << '-' << month << '-' << day << endl; } return 0; } ```
查看全文
0 0 0 2
wuhahaha 题解分享 · 2024/4/9
星系炸弹(结果填空) - 题解
直接使用Java里的LocalDate对象
0 0 0 2
MMM 题解分享 · 2024/4/9
星系炸弹(结果填空) - 题解
``` year,month,day = 2014,11,9 for i in range(1,1001): day += 1 if month == 2: if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): if day == 30: month += 1 day = 1 else: if day == 29: month += 1 day = 1 elif (month == 4 or month == 6 or month == 9 or month == 11) and day == 31: month += 1 day = 1 elif (month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12) and day == 32: month += 1 day = 1 if month == 13: month = 1 year += 1 print(f"{year}-{month}-{day}") ```
查看全文
0 0 0 2
kagami_sama 题解分享 · 2024/4/8
星系炸弹(结果填空) - 题解
``` #include <iostream> using namespace std; int m[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int main() { int year = 2014, morth = 11, day = 9; for (int i = 1; i <= 1000; i ++ ) { day ++ ; if ((year % 4 == 0 )&& (year % 100 != 0) || (year % 400 == 0)) { m[2] = 29; if (day == m[morth] + 1) { morth ++ ; day = 1; } } else { m[2] = 28; if (day == m[morth] + 1) { morth ++ ; day = 1; } } if (morth == 13) { morth = 1; year ++ ; } } printf("%d-%02d-%02d", year, morth, day); return 0; } ```
查看全文
0 0 0 2
zbz 题解分享 · 2024/4/7
星系炸弹(结果填空) - 题解
``` #include<bits/stdc++.h> using namespace std; int dayOfMonth[2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} }; bool isLeapYear(int year) { return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0); } void addOneDay(int &year, int &month, int &day) { day++; // 让day加1 if (day > dayOfMonth[isLeapYear(year)][month]) { // 如果超过当前月的天数 month++; // 让month加1 day = 1; // 重置day为1号 } if (month > 12) { // 如果月份大于12 year++; // 让year加1 month = 1; // 重置month为1月 } } int main() { // ios::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); int year=2014,month=11,day=9; for(int i=1;i<=1000;i++) addOneDay(year,month,day); printf("%d-%02d-%02d",year,month,day); return 0; } ```
查看全文
0 0 0 2
Dervish 题解分享 · 2024/4/7
星系炸弹(结果填空) - 题解
include using namespace std; int months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int main() { int y = 2014, m = 11, d = 9, total = 1000; while(total--) { d ++; if(y%4==0 && y%100!=0 || y%400==0) months[2] = 29; else months[2] = 28; if(d > months[m]) { d = 1; m++; } if(m > 12) { m = 1; y++; } } printf("%d %d %d",y, m, d); return 0; }
查看全文
0 0 0 2
lzh 题解分享 · 2024/4/6
星系炸弹(结果填空) - 题解
include using namespace std; int main(){ int flag=0 ,x=0; for(int year=2014;year 29) break; } else { if(day > 28) break; } } else { if(day > 30) break; } if(year==2014&&month ==11&&day==9){ flag=1; } if( flag==1){ x++; } if(x==1001){ printf("%d-%02d-%02d",year,month,day); } } }
查看全文
0 0 0 2