[C++] AtCoder Beginner Contest 183 A번 ReLU

AtCoder Beginner Contest 183 A번 ReLU

문제

https://atcoder.jp/contests/abc183/tasks/abc183_a abc183_a

풀이

ReLU를 구현하는 문제 ReLU는 입력값이 0보다 작으면 0으로 출력, 0보다 크면 입력값 그대로 출력하는 함수이다.

코드

#pragma warning(disable : 4996)
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<ll> vll;
typedef pair<ll, ll> pll;
typedef pair<ld, ld> pld;
typedef tuple<ll,ll,ll> tl3;
#define FOR(a, b, c) for (int(a) = (b); (a) < (c); ++(a))
#define FORN(a, b, c) for (int(a) = (b); (a) <= (c); ++(a))
#define rep(i, n) FOR(i, 0, n)
#define repn(i, n) FORN(i, 1, n)
#define tc(t) while (t--)
// https://atcoder.jp/contests/abc183/tasks/abc183_a
ll ReLU(ll x){
    if(x >= 0) return x;
    else return 0;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
 
    ll x;
    cin >> x;
    cout << ReLU(x);
 
        return 0;
}

[C++] AtCoder Beginner Contest 182 C번 To 3

AtCoder Beginner Contest 182 C번 To 3

문제

https://atcoder.jp/contests/abc182/tasks/abc182_c abc182_c

풀이

0이 아닌 정수 N이 주어졌을때 몇개의 숫자를 지워 3의 배수로 만들 수 있는지 구하는 문제

임의의 정수가 3의 배수가 되려면 모든 자릿수의 합이 3의 배수가 되어야 한다.

즉 N의 자릿수의 합을 3으로 나눈 나머지가 0이면 답은 0으로 확정. N의 자릿수의 합을 3으로 나눈 나머지가 1이면 1을 1번지우거나 2를 2번지워서 0으로 만들 수 있다. N의 자릿수의 합을 3으로 나눈 나머지가 2이면 2를 1번지우거나 1을 2번 지워서 0으로 만들 수 있다. 위 경우에 포함되지 않는다면 3의 배수로 만들 수 없다.

코드

#pragma warning(disable : 4996)
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<ll> vll;
typedef pair<ll, ll> pll;
typedef pair<ld, ld> pld;
typedef tuple<ll, ll, ll> tl3;
#define FOR(a, b, c) for (int(a) = (b); (a) < (c); ++(a))
#define FORN(a, b, c) for (int(a) = (b); (a) <= (c); ++(a))
#define rep(i, n) FOR(i, 0, n)
#define repn(i, n) FORN(i, 1, n)
#define tc(t) while (t--)
// https://atcoder.jp/contests/abc182/tasks/abc182_c
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
 
    string n;
    cin >> n;
    ll len = n.length();
    ll val=0, one=0, two=0;
    for(auto k : n){
        ll temp = k - '0';
        val += temp;
        if(temp % 3 == 1) one++;
        else if(temp % 3 == 2) two++;
    }
    val = val % 3;
    if(val == 0) cout << 0;
    else if((val == 1 && one > 0 && len > 1) || (val == 2 && two > 0 && len > 1)) cout << 1;
    else if((val == 1 && two > 1 && len > 2) || (val == 2 && one > 1 && len > 2)) cout << 2;
    else cout << -1;
 
    return 0;
}

[C++] AtCoder Beginner Contest 182 B번 Almost GCD

AtCoder Beginner Contest 182 B번 Almost GCD

문제

https://atcoder.jp/contests/abc182/tasks/abc182_b abc182_a

풀이

정수 k의 GCD-ness를 A1 ~ Ak의 수중 k로 나누어지는 정수의 개수라고 했을 때

가장 큰 GCD-ness를 갖는 정수 k를 찾는 문제

입력받은 수열 중 최댓값까지의 소수들을 k로 하여 해당 값들의 GCD-ness를 구하여 GCD-ness가 가장 큰 값 하나를 출력하면 된다.

코드

#pragma warning(disable : 4996)
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<ll> vll;
typedef pair<ll, ll> pll;
typedef pair<ld, ld> pld;
typedef tuple<ll, ll, ll> tl3;
#define FOR(a, b, c) for (int(a) = (b); (a) < (c); ++(a))
#define FORN(a, b, c) for (int(a) = (b); (a) <= (c); ++(a))
#define rep(i, n) FOR(i, 0, n)
#define repn(i, n) FORN(i, 1, n)
#define tc(t) while (t--)
// https://atcoder.jp/contests/abc182/tasks/abc182_b
ll che[1001] ={0,};
vll prime;
void getChe(ll num) {
    for (int i = 2; i <= num; i++) {
        che[i] = i;
    }
    for (int i = 2; i <= num; i++) { 
        if (che[i] == 0) 
            continue;
        for (int j = i + i; j <= num; j += i) {
            che[j] = 0;
        }
    }
}
void getPrime(ll num){
    for(int i = 2;i<=num;i++){
        if(che[i])
            prime.push_back(i);
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
 
    ll max = 0;
    ll ans = 0;
    ll n;
    cin >> n;
    vll v(n);
    rep(i,n) cin >> v[i];
    sort(all(v));
    getChe(v[v.size()-1]);
    getPrime(v[v.size()-1]);
    for(auto k : prime){
        ll cnt = 0;
        for(int i =0;i<n;i++){
            if(v[i] % k == 0) cnt++;
        }
        if(cnt > max) {
            max = cnt;
            ans = k;
        }
    }
    cout << ans;
    
 
    return 0;
}

[C++] AtCoder Beginner Contest 182 A번 twiblr

AtCoder Beginner Contest 182 A번 twiblr

문제

https://atcoder.jp/contests/abc182/tasks/abc182_a abc182_a

풀이

단순한 산수 문제

현재 B명을 팔로잉 중일 때 추가로 몇 명을 더 팔로잉 할 수 있는지 구하는 문제

코드

#pragma warning(disable : 4996)
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<ll> vll;
typedef pair<ll, ll> pll;
typedef pair<ld, ld> pld;
typedef tuple<ll, ll, ll> tl3;
#define FOR(a, b, c) for (int(a) = (b); (a) < (c); ++(a))
#define FORN(a, b, c) for (int(a) = (b); (a) <= (c); ++(a))
#define rep(i, n) FOR(i, 0, n)
#define repn(i, n) FORN(i, 1, n)
#define tc(t) while (t--)
// https://atcoder.jp/contests/abc182/tasks/abc182_a
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
 
    ll a,b;
    cin >> a >> b;
    cout << (2 * a + 100) - b;
    
 
    return 0;
}

[C++] AtCoder Beginner Contest 181 C번 Collinearity

AtCoder Beginner Contest 181 C번 Collinearity

문제

https://atcoder.jp/contests/abc181/tasks/abc181_c abc181_c

풀이

n개의 (x,y) 좌표가 있을때 3개의 점이 일직선에 있는 경우가 있는지 없는지를 판별하는 문제

n의 최대치가 100으로 매우 작기 떄문에 O(n^3)으로 돌려도 무난하게 AC를 받을 수 있다.

코드

#pragma warning(disable : 4996)
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<ll> vll;
typedef pair<ll, ll> pll;
typedef pair<ld, ld> pld;
typedef tuple<ll, ll, ll> tl3;
#define FOR(a, b, c) for (int(a) = (b); (a) < (c); ++(a))
#define FORN(a, b, c) for (int(a) = (b); (a) <= (c); ++(a))
#define rep(i, n) FOR(i, 0, n)
#define repn(i, n) FORN(i, 1, n)
#define tc(t) while (t--)
// https://atcoder.jp/contests/abc181/tasks/abc181_c
ll x[101];
ll y[101];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
 
    ll n;
    cin >> n;
    ll ans = 0;
    rep(i, n)
    {
        cin >> x[i] >> y[i];
    }
    for (ll i = 0; i < n - 2; i++) {
        for (ll j = i+1; j < n - 1; j++) {
            for (ll k = j+1; k < n; k++) {
                ll a, b, c, d;
                a = x[j] - x[i];
                b = x[k] - x[j];
                c = y[j] - y[i];
                d = y[k] - y[j];
                if(a*d == b*c){
                    cout << "Yes";
                    return 0;
                }
            }
        }
    }
    cout << "No";
 
    return 0;
}