[C++] AtCoder Beginner Contest 198
30 May 2021 | PSAtCoder Beginner Contest 198
풀이
A
A - Div
정수 N을 입력받았을 때
두 소년이 N개의 사탕을 분배할 수 있는 방법은 총 몇가지인지 묻는 문제
ex) 2명이 3개의 사탕을 분배하는 경우 -> (1,2) (2,1) 총 2가지 2명이 4개의 사탕을 분배하는 경우 -> (1,3) (2,2) (3,1) 총 3가지 …
N-1을 출력하면 정답
#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/abc198/tasks/abc198_a
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll n;
cin >> n;
cout << n-1;
return 0;
}
B
B - Palindrome with leading zeros
Leading Zero를 붙이거나 안붙였을때 펠린드롬이 되는지 여부를 확인하면 되는 문제
Leading Zero를 포함하는 펠린드롬이라면 원래 뒤에 0이 붙어있을 것이기 때문에 10으로 나눠질때 까지 나눠준 후 펠린드롬 여부를 확인하면 된다.
#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/abc198/tasks/abc198_b
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll n;
cin >> n;
if(n == 0) {
cout<<"Yes";
return 0;
}
else {
while(n%10 == 0)
n/=10;
}
string s = to_string(n);
string ss = s;
reverse(all(s));
if(ss == s) cout<<"Yes";
else cout<<"No";
return 0;
}
C
C - Compass Walking
R, X, Y를 입력받을 때 평면에서 한번에 R만큼의 거리를 갈 수 있다고 하자
(0,0)부터 시작해서 (X,Y)까지 도착하려면 총 몇번을 가야하는지 묻는 문제
도착 지점과 원점과의 거리가 R과 같다면 1 R 초과 2R 이하라면 2 이외의 경우에는 ceil(d/R)을 출력하면 정답
문제 이름대로 좌표평면에 원을 그려보면 쉽게 이해 가능
#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/abc198/tasks/abc198_c
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll r,x,y;
cin >> r >> x >> y;
ll len = x*x + y*y;
ll ans = 0;
if(len == r*r) cout << 1;
else if(len < r*r) cout << 2;
else{
while(r*r*ans*ans<len){
ans++;
}
cout << ans;
}
return 0;
}