题解分享
题解分享简介
第几天(结果填空) - 题解
```c++
#include <bits/stdc++.h>
using namespace std;
int m1[] = {0, 1, 3, 5, 7, 8, 10, 12}; // 存储大月
int m2[] = {0, 4, 6, 9, 11}; // 存储小月
int main()
{
int num = 1; // 2000.1.1是第一天
int year = 2000, month = 1, day = 1;
int year2 = 2000, month2 = 5, day2 = 4;
while(1)
{
num++, day++;
for (int i = 1; i <= 7; ++i) // 判断是否为大月
{
if (month == m1[i] && day == 32) // 大月满足32天进一月
{
month++;
day = 1;
break;
}
}
for (int i = 1; i <= 4; ++i) // 判断是否为小月
{
if(month == m2[i] && day == 31) // 小月满31天进一月
{
month++;
day = 1;
break;
}
}
if (month == 2) // 2月单独判断
{
if ((year % 4 == 0 && year % 100) || year % 400 == 0)
{
if (day == 30) // 闰年满30天进一月
{
month++;
day = 1;
}
}
else
{
if (day == 29) // 平年满29天进一月
{
month++;
day = 1;
}
}
}
if (month == 13) // 满13月进一年
{
month = 1;
year++;
}
if (year == year2 && month == month2 && day == day2) break;
}
cout << num << '\n';
return 0;
}
```
最终答案:125
查看全文
0
0
1
2
第几天(结果填空) - 题解
```
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int nums[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int isleap_year(int year){
if(year%400==0 ||year%4==0 && year%100!=0) return 1;
else return 0;
}
int get_day(int month){
if(month==2 && isleap_year(month)) return 29;
else return nums[month];
}
void next_day(int &year,int &month,int &day){
day++;
if(day>get_day(month)){
day=1,month++;
}
if(month>12){
month=1,year++;
}
}
int main(){
int year=2000,month=1,day=1;
int tianshu=1;
int n=366;
while(n--){
if(month==5 && day==4) {
//单天也算作一天
tianshu++;
break;
};
next_day(year,month,day);
tianshu++;
}
cout<<tianshu;
return 0;
}
```
查看全文
0
0
1
0
第几天(结果填空) - 题解
```
#include<bits/stdc++.h>
using namespace std;
int m1[] = {0,1,3,5,7,8,10,12};//数组m1存储大月
int m2[] = {0,4,6,9,11};//数组m2存储小月
int main(){
int year = 2000,month = 1,day = 1;
int year2 = 2000,month2 = 5,day2 = 4;
int ans = 1;
for(int i = 1;i <= 1000;i++){//加1000天
ans++;
day++;
for(int j = 1;j <=7;j++){
if(month==m1[j] && day == 32){//大月满32天进一月
month++;
day=1;
break;
}
}
for(int j = 1;j <= 4;j++){
if(month == m2[j] && day == 31){//小月满31天进一月
month++;
day=1;
break;
}
}
if(month == 2){
if((year%4==0 && year%100 !=0) || (year%400==0)){
if(day==30){
month++;
day=1;
}
}else{
if(day==29){
month++;
day=1;
}
}
}
if(month==13){//满13月进1年
month = 1;
year++;
}
if(year == year2 && month == month2 && day == day2){
break;
}
}
cout<<ans<<endl;
return 0;
}
```
查看全文
0
0
0
2
第几天(结果填空) - 题解
```cpp
#include <bits/stdc++.h>
using namespace std;
int months[13] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int cnt = 0;
int main() {
for (int year = 2000; year <= 2000; year++) { // 年
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) // 判闰
months[2] = 29;
else
months[2] = 28;
for (int month = 1; month <= 12; month++) // 月
for (int day = 1; day <= months[month]; day++) { // 日
cnt++; // 计数
if (month == 5 && day == 4) {
cout << cnt << endl;
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);
}
// 给当前日期加1天(注意参数都用了引用&,这样对参数的修改可以同步到函数外)
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=2000,month=1,day=1,res=1;
while(year!=2000||month!=5||day!=4)//跑到2020.10.1要包含这天就得往后延一天
{
addOneDay(year,month,day);
res++;
}
cout<<res;
return 0;
}
```
查看全文
0
0
0
3
第几天(结果填空) - 题解
AC 代码
```
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int cnt = 0; // 变量设在开头
for (int year = 2000; year <= 2000; 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;
}
cnt ++ ; // 每走一步就 ++ , 直到达到指定日期
if (month == 5 && day == 4)
{
cout << cnt << endl;
return 0; // 终止程序
}
}
return 0;
}
```
查看全文
0
0
0
2
第几天(结果填空) - 题解
include
using namespace std;
int main()
{
int flag=0,cnt=0;
for(int year=2000;year
29)break;
}
else
{
if(day>28)break;
}
}else{
if(day>30)break;
}
if(year==2000 && month==1 && day==1)
{
flag=1;
}
if(flag==1)cnt++;
if(year==2000 && month==5 && day==4){
printf("%d",cnt);
break;
}
}
return 0;
}
查看全文
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 = 2000, morth = 1, day = 1;
int a = 2000, b = 5, c = 4;
for (int i = 1; ; 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 ++ ;
}
if (year == a && morth == b && day == c)
{
cout << i + 1;
break;
}
}
//printf("%d-%02d-%02d", year, morth, day);
return 0;
}
```
查看全文
0
0
0
2
第几天(结果填空) - 题解
```
year,month,day = 2000,1,1
count = 1
while month <= 5 :
day +=1
count += 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
elif month == 5 and day == 4:
break
print(count)
```
查看全文
0
0
0
1



