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
";
else cout << "No
";
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 imes(p+0.5))
(X) 的范围是(1sim M) 让你寻找有多少个这样的数字
他的意思就是说,(p) 可以随便改变,但是(X) 是固定的,对于序列中的每个数字都能得到同一个(X)
问你有几个这样的(X)
先把等式两边变形(X=a_i/2 imes(2p+1))
因为(a_i)是偶数,所以令(b_i=a_i/2) ,(X=b_i imes(2p+1)) ,所以只需要找有多少个((2p+1)) 小于等于(M) 即可
咕咕咕。