题解分享
题解分享简介
蓝桥杯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
星系炸弹(结果填空) - 题解
```
#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
星系炸弹(结果填空) - 题解
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
星系炸弹(结果填空) - 题解
```
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
星系炸弹(结果填空) - 题解
```
#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
星系炸弹(结果填空) - 题解
```
#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
星系炸弹(结果填空) - 题解
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
星系炸弹(结果填空) - 题解
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



