AtCoder Beginner Contest #59
問題A:Three-letter acronym
3つ文字列が与えられるので, それぞれの1文字目を大文字にしてつなげ表示する. 文字コードでやった.
#include <iostream> #include <cstring> using namespace std; int main(){ string s1, s2, s3; cin >> s1 >> s2 >> s3; cout << (char)('A'+s1[0]-'a') << (char)('A'+s2[0]-'a') << (char)('A'+s3[0]-'a') << endl; }
問題B:Comparison
与えられる数字がであるので, 文字列として受け取る. 文字列の長さで比較し, 同じ長さの場合は左から順に大きいか小さいか見ていく.
#include <iostream> #include <cstdlib> using namespace std; int main(){ string A, B; bool flag = true; cin >> A >> B; if(A.size() > B.size()){ cout << "GREATER" << endl; }else if(A.size() < B.size()){ cout << "LESS" << endl; }else{ for(int i = 0 ; i <(int)A.size() ; i++){ if((A[i]-'0') > (B[i]-'0')){ cout << "GREATER" << endl; flag = false; break; }else if((A[i]-'0') < (B[i] - '0')){ cout << "LESS" << endl; flag = false; break; } } if(flag) cout << "EQUAL" << endl; } }
問題C:Sequence
偶数番目が正, 奇数番目が正の2通りを考え, それらの小さい方を取る. ある桁が期待した符号と異なる場合, ほしい符号の絶対値最小まで変更する(1 or -1)
#include <iostream> #include <cmath> using namespace std; #define rep(i,n) REP(i,0,n) #define REP(i,a,n) for(int i = a ; i < (int)n ; i++) signed main(){ long long a[100001]; long long n; cin >> n; rep(i,n){ cin >> a[i]; } long long c1 = 0, c2 = 0; long long sum = 0; long long c = 1; // 奇数番目を正 REP(i,0,n){ sum += a[i]; if(sum * c <= 0){ c1 += (abs(sum)+1); sum = c; } c*=(-1); } // 偶数番目が正 c = -1; sum = 0; REP(i,0,n){ sum += a[i]; if(sum * c <= 0){ c2 += abs(sum)+1; sum = c; } c*=(-1); } cout << min(c1, c2) << endl; }
問題D:Alice&Brown
#include <iostream> #include <cmath> using namespace std; int main(){ long long x, y; cin >> x >> y; if(abs(x-y) <= 1) cout << "Brown" << endl; else cout << "Alice" << endl; }