题目
思路
小希的那个题贼简单,模拟就好了。
神经网络那个题比较难想,其实对于任意的奇数与偶数,在进行有限次运算后的奇偶特性是确定的,所以我们可以避免在minX-maxX之间一个一个的算,直接找整个算式的奇偶特性即可。
这有点数论那味道了,是个比较好的题目。
AC代码
#include <bits/stdc++.h>
using namespace std;
bool in(int l, int r, int temp) {
if (temp >= l && temp <= r)
return true;
else
return false;
}
int main() {
int T;
cin >> T;
int L, v, l, r, res;
for (int i = 1; i <= T; ++i) {
cin >> L >> v >> l >> r;
//v表示能看到的灯笼处
res = 0;
if (r >= L && l <= 1)
res = 0;
else {
for (int j = 1; j <= L; ++j) {
if (!in(l, r, j) && j % v == 0)
res++;
}
}
cout << res << endl;
}
}
#include <bits/stdc++.h>
using namespace std;
//分别用奇数偶数进行试算 得出这个算式的奇偶性
int main() {
int T, N, minX, maxX, wi, bi;
int resy, resn, even_num, odd_num;
cin >> T;
for (int i = 1; i <= T; ++i) {
cin >> N >> minX >> maxX;
bool even = false, odd = false;
int a = 1, b = 2;
resy = 0, resn = 0;
for (int i = 1; i <= N; ++i) {
cin >> wi >> bi;
a = a * wi + bi;
b = b * wi + bi;
}
if (a % 2 == 0)
odd = true;
if (b % 2 == 0)
even = true;
even_num = 0, odd_num = 0;
for (int i = minX; i <= maxX; ++i) {
if (i % 2 == 0)
even_num++;
else
odd_num++;
}
int temp = maxX - minX + 1;
if (even) {
if (odd) { //所有数进来都是偶数
resn = temp;
} else {
//只有偶数进来才是偶数
resn = even_num;
resy = odd_num;
}
} else {
if (odd) {
//只有奇数进来是偶数
resn = odd_num;
resy = even_num;
} else {
resy = temp;
}
}
cout << resn << " " << resy << endl;
}
}