洛谷P8771 [蓝桥杯 2022 省 B] 填空问题
题目描述
试题 A:九进制转十进制
【问题描述】
九进制正整数 (2022)9 转换成十进制等于多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题 B:顺子日期
【问题描述】
小明特别喜欢顺子。顺子指的就是连续的三个数字:123
、456
等。顺子日期指的就是在日期的 уyyymmdd
表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123
就是一个顺子日期,因为它出现了一个顺子:123
; 而 20221023
则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
输入格式
输入格式输入一个大写字母,表示第几个问题。
输出格式
根据所输入的问题编号,输出对应问题的答案。
输入输出样例
无
思路及题目:这里都是模拟题,直接给出通过的代码,仅供参考:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<limits.h>
#include<stdlib.h>
#include<math.h>
#include <stdbool.h>
bool is(char* str)
{
int arr[8];
for (int i = 0; i < 8; i++)
{
arr[i] = str[i] - '0';
}
for (int i = 0; i < 6; i++)
{
if (arr[i] + 1 == arr[i + 1] && arr[i + 1] + 1 == arr[i + 2])
{
return true;
}
}
return false;
}
int main()
{
char s = 0;
scanf("%c", &s);
if (s == 'A')
{
char str[] = "2022";
int z = (int)strtol(str, NULL, 9);
printf("%d\n", z);
}
else if (s == 'B')
{
char str[9]; int count = 0;
for (int month = 1; month <= 12; month++)
{
int day = 0;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
day = 31;
}
else if (month == 2)
{
day = 28;
}
else
{
day = 30;
}
for (int d = 1; d <= day; d++)
{
sprintf(str, "2022%02d%02d", month, d);
if (is(str))
{
count++;
}
}
}
printf("%d\n", count);
}
return 0;
}