
cs
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
// 题目给出的数组
int arr[100] = {
5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,
8,3,0,3,7,9,2,
7,0,5,8,8,5,7,0,9,9,1,9,4,4,6,8,6,3,3,8,5,1,6,3,4,6,7,0,7,8,2,7,6,8,
9,5,6,5,6,1,4,0,1,
0,0,9,4,8,0,9,1,2,8,5,0,2,5,3,3
};
// 判断date_str是否是arr的子序列
bool is_subsequence(const char *date_str) {
int i = 0; // 数组下标
int j = 0; // 字符串下标
int len = strlen(date_str);
while (i < 100 && j < len) {
if (arr[i] == (date_str[j] - '0')) {
j++;
}
i++;
}
return j == len;
}
int main() {
// 2023年各月天数
int days_in_month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int count = 0;
char date_str[9]; // "2023mmdd\0"
for (int month = 1; month <= 12; month++) {
for (int day = 1; day <= days_in_month[month-1]; day++) {
// 格式化为 2023mmdd
sprintf(date_str, "2023%02d%02d", month, day);
if (is_subsequence(date_str)) {
count++;
}
}
}
printf("符合条件的不同日期数量:%d\n", count);
return 0;
}

cs
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
int total_days=1;
int cnt=0;
for(int month=0;month<12;month++)
{
total_days+=month_day[month];
}
for(int year=1901;year<=2000;year++)
{
if(year%400==0||(year%4==0&&year%100!=0)) month_day[1]=29;
for(int month=0;month<12;month++)
{
int weekday=total_days%7;
if(weekday==0) cnt++;
total_days+=month_day[month];
}
}
printf("%d",cnt);
return 0;
}

cs
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
int total_day=6;
int cnt=0;
for(int month=0;month<12;month++)
{
for(int day=1;day<=month_day[month];day++)
{
int weekday=total_day%7;
if(day==1||day==11||day==21||day==31||weekday==6||weekday==0) cnt++;
total_day++;
}
}
printf("%d",cnt);
return 0;
}

cs
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
int num[]={13,1,2,3,5,4,4,2,2,2};
int sum(const char *data)
{
int a[10];
int total=0;
for(int i=0;i<8;i++)
{
a[i]=data[i]-'0';
total+=num[a[i]];
}
return total;
}
int main(int argc, char *argv[])
{
int cnt=0;
char data[10];
for(int year=2000;year<=2024;year++)
{
if(year%400==0||(year%4==0&&year%100!=0)) month_day[1]=29;
else month_day[1]=28;
for(int month=1;month<=12;month++)
{
int max=month_day[month-1];
if(year==2024&&month==4) max=13;
for(int day=1;day<=max;day++)
{
sprintf(data,"%04d%02d%02d",year,month,day);
int total=sum(data);
if(total>50) cnt++;
}
if(year==2024&&month==4) break;
}
}
printf("%d",cnt);
return 0;
}

cs
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int check(int num)
{
while(num>0)
{
if(num%10==1) return 1;
num/=10;
}
return 0;
}
int main(int argc, char *argv[])
{
int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int sum=0;
int weekday=0;
for(int month=1;month<=12;month++)
{
for(int day=1;day<=month_day[month];day++)
{
int x=check(month);
int y=check(day);
int z=(weekday==1);
if(x||y||z) sum+=5;
else sum+=1;
weekday=(weekday+1)%7;
}
}
printf("%d",sum);
return 0;
}