AtCoder Beginner Contest 248 (A ~ D)

A - Lacked Number

题意:

给定一个长度为 99 只包含数字的字符串, 0099 只出现一次,求唯一缺少的数字

分析:

没啥好说的,遍历一遍字符串,一个数字出现了就标记它为 truetrue ,最后输出那个仅有的 falsefalse 元素就行

代码:

#include<bits/stdc++.h>
using namespace std;

const int N = 10;

bool a[N];

int main()
{
    string s;
    cin >> s;
    for (int i = 0;i < s.size();i ++)
        a[s[i] - '0'] = true;
        
    for (int i = 0;i <= 9;i ++)
        if (!a[i])
            cout << i;
    
    
    return 0;
}

B - Slimes

题意:

给定 n,m,kn, m, k ,迭代一次 nn 就会乘 kk 倍,求迭代多少次后 n>=mn >= m

分析:

没啥说的,模拟着乘一下就行

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n, m, k;
    cin >> n >> m >> k;
    
    int cnt = 0;
    while (n < m)
    {
        n = n * k;
        cnt ++;
    }
    cout << cnt;
    
    return 0;
}

C - Dice Sum

题意:

没会的 dpdp ,等以后回来补...

分析:

...

代码:

D - Range Count Query

题意:

给定 NN 个数,有 QQ 次询问,每次询问有 L,R,XL, R, X ,求在 NN 个数中,求从第 LL 个数到第 RR 个数中有几个数等于 XX

分析:

mapmap 存每个值对应的下标,再二分求每个值下标在范围内的个数并输出

代码:

#include <bits/stdc++.h>
using namespace std;
map<int, vector<int>> mp;
int main()
{
	int n;
	cin >> n;
	for (int i = 1;i <= n;i ++)
	{
	    int t;
	    cin >> t;
	    mp[t].push_back(i);
	}
	int t;
	cin >> t;
	while (t --)
	{
	    int l, r, x;
	    cin >> l >> r >> x;
	    auto st = lower_bound(mp[x].begin(), mp[x].end(), l);
	    auto ed = lower_bound(mp[x].begin(), mp[x].end(), r + 1);
	    cout << ed - st << endl;
	}
	
	return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-10 11:42
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务