why0210 题解分享 · 2024/4/17
艺术与篮球(结果填空) - 题解
``` #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
aboyl 题解分享 · 2025/3/3
艺术与篮球(结果填空) - 题解
这是一个标准的日期处理问题 模版代码如下 ``` #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
Mandy 题解分享 · 2025/1/16
艺术与篮球(结果填空) - 题解
直接套用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
yuri01 题解分享 · 2025/1/19
艺术与篮球(结果填空) - 题解
```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