AtCoder Beginner Contest 150
AtCoder Beginner Contest 150
A
#include <bits/stdc++.h>
using namespace std;
int main() {
int k, x;
cin >> k >> x;
if(k * 500 >= x) cout << "Yes\n";
else cout << "No\n";
return 0;
}
B
字串匹配
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,cnt = 0;
string s;
cin >> n >> s;
for(int i = 0;i < n; ++i) {
if(i + 2 < n && s[i] == 'A' && s[i + 1] == 'B' && s[i + 2] == 'C') cnt ++;
}
cout << cnt;
return 0;
}
C
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int fact[10] = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880};
int cantor(int a[],int n) {
int res = 0;
for(int i = 0;i < n; ++i) {
int cnt = 0;
for(int j = i + 1;j < n; ++j) if(a[j] < a[i]) cnt ++;
res += cnt * fact[n - i - 1];
}
return res + 1;
}
int main() {
int n,a,b,s[N];
cin >> n;
for(int i = 0;i < n; ++i) cin >> s[i];
a = cantor(s,n);
for(int i = 0;i < n; ++i) cin >> s[i];
b = cantor(s,n);
cout << abs(a - b);
return 0;
}
D
给定一个序列\(A={a_1+a_2+\dots+a_N}\) 序列中的每一个数都是偶数,和一个整数\(M\)
定义一个”半公倍数“\(X\) 满足对于每个\(a_i\) ,都存在一个正整数\(p\) 与之对应,且\(X=a_i\times(p+0.5)\)
\(X\) 的范围是\(1\sim M\) 让你寻找有多少个这样的数字
他的意思就是说,\(p\) 可以随便改变,但是\(X\) 是固定的,对于序列中的每个数字都能得到同一个\(X\)
问你有几个这样的\(X\)
先把等式两边变形\(X=a_i/2\times(2p+1)\)
因为\(a_i\)是偶数,所以令\(b_i=a_i/2\) ,\(X=b_i\times(2p+1)\) ,所以只需要找有多少个\((2p+1)\) 小于等于\(M\) 即可
咕咕咕。