2018年蓝桥杯省赛真题 星期一(for)

28 阅读1分钟

该题比较简单,代码如下

        法1

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include <iomanip>
#include<cmath>
#include<cstring>
#include<cctype>
#include<queue>
using namespace std;

int main()
{
	int sum_day = 0,cn=0,mon=0;
	for (int i = 1901; i <= 2000; i++)//计算全部年份天数之和
	{
		if ((i % 4 == 0 && i % 100 != 0) || (i % 400) == 0)
		{
			sum_day += 366;
		}
		else
		{
			sum_day += 365;
		}
	}
	sum_day -= 6;//由于2000.12.31是星期天,所以-=6使我们下面方便判断是否是星期一
	for (int i = sum_day; i > 0; i--,cn++)
	{
		if (cn % 7 == 0)//注意这里cn%7,当cn=0的时候也成立,所以我们上面才-=6
		{
			mon++;
		}
	}
	cout << mon<< endl;
	return 0;
}

        法2

#include <iostream>
using namespace std;
int res;
//先判断润年
bool is_r(int n)
{
    if((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)
        return true;
    return false;
}
int main()
{
  for(int i = 1901;i <= 2000;i ++)
    if(is_r(i)) res += 366;
    else res += 365;
  int x = res / 7;
  cout << x << endl;
  return 0;
}