题解分享
题解分享简介
艺术与篮球(结果填空) - 题解
```
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e5+9;
int mon[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int p[]={13,1,2,3,5,4,4,2,2,2};
ll ans;
bool check(int x)
{
return (x%4==0&&x%100!=0||x%400==0);
}
int add(int year,int month,int day)
{
int res=year*10000+month*100+day,x=0;
while(res)
{
int t=res%10;
x+=p[t];
res/=10;
}
return x;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
for(int i=2000;i<=2024;i++)
{
for(int j=1;j<=12;j++)
{
int day;
if(j==2&&check(i))day=29;
else if(j==2&&!check(i))day=28;
else day=mon[j];
for(int k=1;k<=day;k++)
{
if(i==2024&&j==4&&k==14)
{
cout<<ans<<'\n';
return 0;
}
int t=add(i,j,k);
if(t>50)ans++;
cout<<i<<' '<<j<<' '<<k<<' '<<t<<'\n';
}
}
}
return 0;
}
/*
a组
*/
```
查看全文
2
0
0
5
艺术与篮球(结果填空) - 题解
这是一个标准的日期处理问题 模版代码如下
```
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair long long
#define endl "\n"
int sy=2000,sm=1,sd=1;
int ey=2024,em=4,ed=13;
int cy,cm,cd;
int nums[10]={13,1,2,3,5,4,4,2,2,2};
int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int ans=0;
void date(){
cy=sy;
cm=sm;
cd=sd;
while(1){
//定一个死循环来
//这里放置对这一天的处理代码
string s;
s=s+to_string(cy);
if(cm>=10) s=s+to_string(cm);
else s=s+'0'+to_string(cm);
if(cd>=10) s=s+to_string(cd);
else s=s+'0'+to_string(cd);
int sum=0;
for(int i=0;i<s.size();i++){
sum+=nums[s[i]-'0'];
}
if(sum>50) ans++;
//处理完这一天之后 判断是否不需要继续了 显然这个的先后取决于最后一天是否处理
if(cy==ey&&cm==em&&cd==ed){
break;
}
//进入下一天 仅需调一下二月的情况
if(cy%400==0||(cy%4==0&&cy%100!=0)){
month_day[2]=29;
}else month_day[2]=28;
cd++;
if(cd>month_day[cm]){
cm++;
cd=1;
}
if(cm>12){
cm=1;
cy++;
}
}
}
void solve(){
date();
cout<<ans<<endl;
}
signed main() {
int t = 1;
// cin>>t;
while (t--) {
solve();
}
}
```
查看全文
0
0
0
3
艺术与篮球(结果填空) - 题解
直接套用pdf文档中的日期计算模板,然后将日期转化为字符串,遍历字符串的各个元素,统计笔画数即可。
```
#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=0;
int year=2000,month=1,day=1;
int year2=2024,month2=4,day2=13;
while(1)
{
for(int i=1;i<=7;i++)
{
if(month==m1[i] && day==32)
{
month++;
day=1;
break;
}
}
for(int i=1;i<=4;i++)
{
if(month==m2[i] && day==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){
year++;
month=1;
}
string str;
string s_year=to_string(year);
string s_month= month<10 ? "0"+to_string(month) : to_string(month);
string s_day= day<10 ? "0"+to_string(day) : to_string(day);
str = s_year + s_month + s_day;
int sum=0;
for(int i=0;i<str.size();i++)
{
if(str[i]=='1') sum +=1;
else if(str[i]=='2'||str[i]=='7'||str[i]=='8'||str[i]=='9') sum +=2;
else if(str[i]=='3') sum +=3;
else if(str[i]=='4') sum +=5;
else if(str[i]=='5'||str[i]=='6') sum +=4;
else if(str[i]=='0') sum += 13;
}
if(sum >50) num++;
if(year==year2&&month==month2&&day==day2){
break;
}
day++;
}
cout<<num<<endl;
return 0;
}
```
查看全文
0
0
0
2
艺术与篮球(结果填空) - 题解
```cpp
// https://dashoj.com/d/lqbproblem/p/203
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int ans = 0;
int main() {
for (int y = 2000; y <= 2024; y++) {
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) months[2] = 29;
else months[2] = 28;
for (int m = 1; m <= 12; m++)
for (int d = 1; d <= months[m]; d++) {
ll x = 0, a = 0;
x += y * 10000;
x += (m >= 10 ? m : m * 10) * 100;
x += d >= 10 ? d : d * 10;
string str = to_string(x);
for (int i = 0; i < str.length(); i++) {
if (str[i] == '0') a += 13;
if (str[i] == '1') a += 1;
if (str[i] == '2') a += 2;
if (str[i] == '3') a += 3;
if (str[i] == '4') a += 5;
if (str[i] == '5') a += 4;
if (str[i] == '6') a += 4;
if (str[i] == '7') a += 2;
if (str[i] == '8') a += 2;
if (str[i] == '9') a += 2;
}
if (a > 50) ans++;
if (y == 2024 && m == 4 && d == 13) {
cout << ans << endl;
return 0;
}
}
}
}
```
查看全文
0
0
0
1



