純粋な力。各日を列挙します。i、j、k はそれぞれ年、月、日を表し、mt 配列には各月の日数が格納されています(閏年の場合は特別な処理が必要です)
最初に通過できなかったのは、三項演算子を使用して閏年を判定しようとしたためで、私はそれを扱えないことに気づきました 233
#include<bits/stdc++.h>
using namespace std;
int mt[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int sl[7]={0};
int main(){
int n;
cin>>n;
int day=-1;
int cnt=0;
for(int i=1900;i<=1900+n-1;++i){
bool rn=0;
if(i%100==0){
if(i%400==0){
rn=1;
}
}
else{
if(i%4==0){
rn=1;
}
}
if(rn)mt[2]=29;
else mt[2]=28;
for(int j=1;j<=12;++j){
for(int k=1;k<=mt[j];++k){
++day;
day%=7;
// cout<<i<<' '<<j<<' '<<k<<' '<<day<<endl;
if(k==13)++sl[day];
++cnt;
}
}
}
for(int i=5;i<7;++i){
cout<<sl[i]<<' ';
}
for(int i=0;i<5;++i){
cout<<sl[i]<<' ';
}
cout<<endl;
return 0;
}