模拟题求助
查看原帖
模拟题求助
780505
x1489631649楼主2024/5/1 11:47
#include<bits/stdc++.h>
using namespace std;
int a1[15]={0,31,59,90,120,151,181,212,243,273,304,334,365};//平年每个月结束时的天数。
int a2[15]={0,31,60,91,121,152,182,213,244,274,305,335,366};//闰年每个月结束时的天数。 
int s[15]={13,1,2,3,5,4,4,2,2,2};//字的笔画。 
int main()
{
	int ans=0;//统计打篮球的天数。 
	for(int k=2000;k<=2024;k++)
	{
		
		if(k%4==0&&k%100!=0||k%400==0)//枚举闰年的情况。
		{
			if(k!=2024)
			{
				for(int i=1;i<=366;i++)
				{
					int s1=0;
					for(int j=1;j<=12;j++)//枚举月份。 
					{
						if(a2[j]>i)
						{
							s1+=s[k%10]+s[k/10%10]+s[k/100%10]+s[k/1000];//统计年笔画。
							s1+=s[j%10]+s[j/10];//统计月份笔画,注意格式为不论月份大小都为两位数。 
							s1+=s[(i-a2[j-1])%10]+s[(i-a2[j])/10];//统计日的笔画。
							if(s1>50)
								ans++; 
							break;
						}
					}
				}
			}
			else {
				for(int i=1;i<=104;i++)
				{
					int s1=0;
					for(int j=1;j<=4;j++) 
					{
						if(a2[j]>i)
						{
							s1+=s[k%10]+s[k/10%10]+s[k/100%10]+s[k/1000];
							s1+=s[j%10]+s[j/10];
							s1+=s[(i-a2[j-1])%10]+s[(i-a2[j])/10];
							if(s1>50)
								ans++; 
							break;
						}
					}
				}
			}
		}
		else{//枚举平年的情况。
			for(int i=1;i<=365;i++)
			{
				int s1=0; 
				for(int j=1;j<=12;j++) 
				{
					if(a1[j]>i)
					{
						s1+=s[k%10]+s[k/10%10]+s[k/100%10]+s[k/1000];
						s1+=s[j%10]+s[j/10];
						s1+=s[(i-a1[j-1])%10]+s[(i-a1[j])/10];
						if(s1>50)
							ans++; 
						break;
					}
				}
			}
		}
	}
	cout<<ans; 
    return 0;
}
2024/5/1 11:47
加载中...