题目
B1046
-
题意解读
如题平局不计分,猜对对方记一分。 -
思路
就是简单的按规则来,平局不计分。猜对了给对方积一分。 -
Code in C++
#include <iostream>
int main()
{
int N;
std::cin >> N;
int a, an, b, bn;
int acount = 0, bcount = 0;
while(N--) {
std::cin >> a >> an >> b >> bn;
int sum = a + b;
if (sum == an && sum != bn) {
++bcount;
} else if (sum == bn && sum != an) {
++acount;
}
}
std::cout << acount << " " << bcount << std::endl;
return 0;
}
B1008
-
题意解读
如题就是简单的逻辑上循环右移,输出右移后的结果。 -
思路
- 这里开始分析题目,N和M的关系,当
N == M
的时候其实相当于没有移动,所以当N > M
的时候,很自然可以直接减去相等的部分,即最后移动次数是M % N
。但是因为不用真的移动,只用输出的时候找到对应数组中的位置即可,这里我是采用找到输出的首位置start
然后结合取余操作进行输出,因为这里循环右移不会改变它们线性的位置关系。 - 另外还有一个方法是先输出
N-M ~ N-1
位置的值,然后输出0 ~ N-M-1
的值,这样不用做取余操作。
- Code in C++
#include <iostream>
#define maxn 101
int main()
{
int n, m;
int a[maxn];
std::cin >> n >> m;
for (int i = 0; i < n; ++i) {
std::cin >> a[i];
}
m = m % n;
if (m == 0) {
std::cout << a[0];
for (int i = 1; i < n; ++i) {
std::cout << " " << a[i];
}
} else {
int start = n - m;
std::cout << a[start];
for (int i = 1; i < n; ++i) {
std::cout << " " << a[(start+i)%n];
}
}
std::cout << std::endl;
return 0;
}
B1012
-
题意解读
就是简单的对数据不同的判断及不同的处理规则对应。 -
思路
这里分别要求的是从余数0-4的不同处理,不出现的输出N
,其实一定程度上提醒了需要计数。 -
Code in C++
#include <iostream>
#define maxn 1001
int num[maxn];
int main()
{
int n;
int a[5] = {0};
int count[5] = {0};
std::cin >> n;
for (int i = 0; i < n; ++i) {
std::cin >> num[i];
}
int flag = 1;
for (int i = 0; i < n; ++i) {
int left = num[i] % 5;
switch(left) {
case 0:
if (num[i] % 2 == 0) {
++count[0];
a[0] += num[i];
}
break;
case 1:
++count[1];
a[1] += flag * num[i];
flag = -flag;
break;
case 2:
++count[2];
++a[2];
break;
case 3:
++count[3];
a[3] += num[i];
break;
case 4:
++count[4];
if (num[i] > a[4])
a[4] = num[i];
break;
}
}
for (int i = 0; i < 4; ++i) {
if (count[i]) {
if (i != 3)
printf("%d ", a[i]);
else
printf("%.1f ", (double)a[i]/count[3]);
} else {
printf("%c ", 'N');
}
}
if (count[4]) {
printf("%d\n", a[4]);
} else {
printf("%c\n", 'N');
}
return 0;
}
小结
- 要细心,最后一题找bug找了半天,原来是进了case之后先直接对次数加1了,而不是在判断为是偶数之后。
++count[0];
if (left % 2 == 0) {
a[0] += num[i];
}
- 今天刷题有点慢了,对比昨天一样其实题目都很简单,但是今天就刷了三题而且超过了一个小时,主要可能还是花在了调bug上。并且没读完一道题后并没有立马code,花费了一些时间。明天加油~