AtCoder Beginner Contest 248 (A ~ D)
A - Lacked Number
题意:
给定一个长度为 只包含数字的字符串, 到 只出现一次,求唯一缺少的数字
分析:
没啥好说的,遍历一遍字符串,一个数字出现了就标记它为 ,最后输出那个仅有的 元素就行
代码:
#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
题意:
给定 ,迭代一次 就会乘 倍,求迭代多少次后
分析:
没啥说的,模拟着乘一下就行
代码:
#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
题意:
没会的 ,等以后回来补...
分析:
...
代码:
D - Range Count Query
题意:
给定 个数,有 次询问,每次询问有 ,求在 个数中,求从第 个数到第 个数中有几个数等于
分析:
开 存每个值对应的下标,再二分求每个值下标在范围内的个数并输出
代码:
#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;
}


