题解:P10385 [蓝桥杯 2024 省 A] 艺术与篮球

· · 题解

思路

按题意模拟即可。

另外题目让把数字转换成汉字再转笔画,其实可以直接数字转笔画。(不会真有人先把数字转汉字再对应多少笔吧)

注意事项

闰年,大月,小月。

代码

#include<bits/stdc++.h>
using namespace std;
int s[11]={13,1,2,3,5,4,4,2,2,2};//每个数字的笔画
int main()
{
    int a=0,b=0,y=2000,m=1,d=1;
    while(1)
    {
        if(m%2==1 && m<=7)//大月
        {
            if(d>31)
            {
                m++;
                d=1;
            }
        }
        else if(m%2==0 && m>=8)//大月
        {
            if(d>31)
            {
                m++;
                d=1;
            }
        }
        else if(m==2)//二月
        {
            if(y%100==0 && y%400==0)//闰年
            {
                if(d>29)
                {
                    m++;
                    d=1;
                }
            }
            else if(y%100!=0 && y%4==0)//闰年
            {
                if(d>29)
                {
                    m++;
                    d=1;
                }
            }
            else//平年
            {
                if(d>28)
                {
                    m++;
                    d=1;
                }
            }
        }
        else//小月
        {
            if(d>30)
            {
                m++;
                d=1;
            }
        }
        if(m>12)
        {
            y++;
            m=1;
        }
        if(y==2024 && m==4 && d==14)
        {
            cout<<b;//输出
            return 0;
        }
        int sum=s[y%10];//统计笔画
        sum+=s[(y%100)/10]+s[(y%1000)/100]+s[y/1000];
        sum+=s[m%10]+s[m/10];
        sum+=s[d%10]+s[d/10];
        if(sum>50)
        {
            b++;
        }
        else
        {
            a++;
        }
        d++;
    }
}

当然交这份代码上去会超时,而一般提交答案题都是获取到答案后再写份代码输出。

输出代码


#include<bits/stdc++.h>
using namespace std;
int main()
{
  cout<<???;//这里输出的就不透露了,输出上面那份代码得到的答案就行了
}