零点工作室暑假集训(AtCoder--ABC281)


A - Count Down

题目大意:降序打印所有非负且小于等于N的数字

解题思路:设置一个变量将他自减并打印出来即可

AC代码:

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

int n;


int main()
{
    cin >> n;
    for(int i = n; i >= 0; i --)
    {
        cout << i << endl;
    }

    
    return 0;
}

B - Sandwich Number

题目大意:输入一个字符串s判断s是否符合以下三个条件?

1.以大写字母开头

2.还没到中间包含一个六位数的数字x。其大小在 x\in \left [ 100000,999999 \right ]

3.以大写字母结束

解题思路:由题意已知该字符串只能为8位大小,因为要满足首位2个大写字母,中间为6位大小满足100000--999999的数字.然后再从首个和最后一个字符以此用该条件判断。

AC代码:

#include <iostream>

using namespace std;

int main()
{
    string S;
    cin >> S;
    if (S.length() != 8)
    {
        cout << "No";
        return 0;
    }
    if (S[1] <= '0' || S[1] > '9')
    {
        cout << "No";
        return 0;
    }
    if (S[0] < 'A' || S[0] > 'Z' || S[S.length() - 1] < 'A' || S[S.length() - 1] > 'Z')
    {
        cout << "No";
        return 0;
    }
    for (int i = 2; i < 7; i++)
    {
 
        if (S[i] < '0' || S[i] > '9')
        {
            cout << "No";
            return 0;
        }
    }
    cout << "Yes";
    return 0;
}

C - Circular Playlist

 题目大意:有一个播放器里面一共有n首歌。给定每一首歌的长度,每首歌的播放是互斥的并且一首播完立即播下一首。那么在一个给定的T时间之后,播放到哪一首歌了?这首歌已经播放了几秒?

解题思路:首先知道该题用的是前缀和,将每个位置上的前缀和算出,然后T总和取余,找出取余后的秒数落在哪一首歌里面,再用取余后的秒数减去该首歌之前的前缀和,因为是从这首歌算开始了多少时间。

AC代码:

#include <iostream>
#include <algorithm>

using namespace std;

typedef long long LL;

const int N = 100010;

LL a[N], s[N];
LL n, t;

int main()
{
    cin >> n >> t;
    
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
        s[i] = s[i - 1] + a[i];
    }
    
    t = t % s[n];
    
    for(int i = 1; i <= n; i ++)
    {
        if(t < s[i])
        {
            cout << i << " " << t - s[i - 1] << endl;
            break;
        }
    }
    
    return 0;
    
}

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值