A题题意:给一个数m,找到比m小的并且最接近它的10的次幂的数,输出他们的差值
本题只是一个小模拟,直接让i从1开始循环,每次让i乘以10,当i大于m的时候就退出循环,然后此时最接近m的数就是i/10,他们的差值就是m-i/10;
以下附上代码:
#include<iostream>
#include<algorithm>
#include<map>
#include<cmath>
#include<vector>
using namespace std;
#define ll long long
#define PII pair<int,int>
#define PLL pair<long,long>
#define Pi 3.141592653589793238462643383279
#define fi first
#define se second
const ll N = 2e5 + 10;
int main() {
ll int tt;
cin >> tt;
while (tt--) {
long long int m;
cin >> m;
long long int q = 0, i = 1;
for (;; i *= 10) {
if (i > m) {
q = i;
break;
}
}
if (m == 1) { cout << "0\n"; }
else if (m == i / 10) {
cout << "0" << endl;
}
else {
q = q / 10;
cout << m - q << endl;
}
}
}
B题题意:就是给你一串字符串,从左向右遍历,每天只能记三种不同的单词,当出现第四种的时候就要在后一天才能记录,次数就要++;也是一道小模拟
用map记录次数就行,以下附上核心代码:
map<char, int>mp;
string s;
cin >> s;
int cnt = 1, daan = 0;
for (int i = 0; i < s.size(); i++)
{
if (mp[s[i]] == 0)
{
if (daan >= 3)
{
daan= 1;
cnt++;
mp.clear();
}
else {
daan++;
mp[s[i]] = 1;
}
}
}
cout << cnt << endl;