Kalendar

[COCI2022-2023#5] Kalendar

题目描述

Magdalena 喜欢日历,她为每个月制作自己的日历。

每月的每一天都正好用三个字符表示:

  • 如果天数是一位数,则表示为 ..X。例如:数字 7 7 7 被表示为 ..7
  • 如果天数是两位数,那么它表示为 .XY。例如:数字 17 17 17 被表示为 .17

日历的每一行代表一个星期,每个星期由 7 7 7 天组成。如果
一周没有所有的 7 7 7 天(因为有可能这个月不是从星期一开始的,或者不是在星期日结束的),那么缺失的日子就用 ... 表示。

Magdalena 也希望她的日历是漂亮的。她将用以下方式来装饰它:
她将在上下两边填上 -(ASCII 45),左右两边填上 |(ASCII 124),而四个角落用 +(ASCII 43)。

你的任务是确定 Magdalena 日历的格式,如果它有 n n n 天,并且每月的第一天是一周的第 x x x 天。例如,如果 x = 1 x=1 x=1,这个月就从星期一开始,如果 x = 5 x=5 x=5,就从星期五开始。

我们假设一周的第一天是星期一。

输入格式

一行,包含整数 n n n x ( 1 ≤ n ≤ 99 , 1 ≤ x ≤ 7 ) x(1\leq n\leq 99,1\leq x\leq 7) x(1n99,1x7),表示该月的天数,以及该月的起始日。

输出格式

输出 Magdalena 日历的样子。

样例 #1

样例输入 #1

31 3

样例输出 #1

+---------------------+
|........1..2..3..4..5|
|..6..7..8..9.10.11.12|
|.13.14.15.16.17.18.19|
|.20.21.22.23.24.25.26|
|.27.28.29.30.31......|
+---------------------+

样例 #2

样例输入 #2

1 5

样例输出 #2

+---------------------+
|..............1......|
+---------------------+

样例 #3

样例输入 #3

28 7

样例输出 #3

+---------------------+
|....................1|
|..2..3..4..5..6..7..8|
|..9.10.11.12.13.14.15|
|.16.17.18.19.20.21.22|
|.23.24.25.26.27.28...|
+---------------------+

提示说明

在这里插入图片描述

Subtask p t s pts pts限制
0 0 0 0 0 0是样例
1 1 1 7 7 7 n + x ≤ 8 n+x\leq 8 n+x8
2 2 2 19 19 19 x = 1 x=1 x=1
3 3 3 24 24 24

代码内容

// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int main()
{
    ll n,x,d=0;
    cin>>n>>x;
    
    puts("+---------------------+");
    d-=(x-2);//保证第一天的位置是正确的
    for(ll i=1;;i++)
    {
        cout<<"|";
        for(ll j=1;j<=7;j++)
        {
            if(d<=0||d>n) cout<<"...";
            else if(d>0&&d<10) cout<<".."<<d;
            else cout<<"."<<d;
            d++;
        }
        
        cout<<"|"<<endl;
        if(d>n) break;
    }
    
    puts("+---------------------+");
    return 0;
}
  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pretty Boy Fox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值