https://codeforces.com/problemset/problem/129/A
//C++
//C++
#include <bits/stdc++.h>
#define F_I ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define pi 3.1415926535
using namespace std;
typedef long long ll;
int arr[101];
int main() {
F_I;
ll n, sum = 0, even = 0, odd = 0;
cin >> n;
for (ll i = 0; i < n; i++)
{
cin >> arr[i];
sum += arr[i];
if (arr[i] % 2 == 0)
even++;
else
odd++;
}
if (sum % 2 == 0)
cout << even << '\n';
else
cout << odd << '\n';
}
> 가방을 하나만 가져간 뒤, 남은 쿠키들의 개수의 합이 짝수가 나올수 있는 경우의 수를 구하는 문제이다.
> 일단 n(가방의 개수)을 입력받는다. 그리고 각각의 가방에 쿠키의 개수를 입력받음과 동시에 쿠키들의 총 합(sum)도 같이 구한다. 또한 쿠키의 개수가 짝수개가 들어있는 가방의 수를 even으로 , 쿠키의 개수가 홀수개가 들어있는 가방의 수를 odd로 구해놓는다.
> 전체 합(sum)에서 아무 가방 1개에 들어있는 쿠키의 개수를 뺀 것이 짝수가 나와야 하는 것이다. 또한,
짝수 - 짝수 = 짝수
짝수 - 홀수 = 홀수
홀수 - 홀수 = 짝수
홀수 - 짝수 = 홀수
이므로,
sum이 짝수일 땐, 쿠키의 개수가 짝수 개인 가방을 빼면 되고(다시 말해, even의 수를 출력하면 되고),
sum이 홀수일 땐, 쿠키의 개수가 홀수 개인 가방을 빼면 된다(다시 말해, odd의 수를 출력하면 된다).
> 짝수와 홀수의 규칙성만 찾으면 금방 풀 수 있는 간단한 문제이다.
'Problem Solving > 코드포스' 카테고리의 다른 글
[코드포스] 1283B : Candies Division (0) | 2020.07.06 |
---|---|
[코드포스] 822A : I'm bored with life (0) | 2020.07.02 |
[코드포스] 1316A : Grade Allocation (0) | 2020.07.01 |
[코드포스] 1374A : Required Remainder (0) | 2020.06.30 |