AtCoder 生活　18日目

#18日目
今回は、A問題を5問、B問題を5問、C問題を2問解きました

|問題番号|難易度|自力で解けた|かかった時間|
|---|:-:|:-:|---|---|
|ABC129|A|◯|5分4秒|
|ABC130|A|◯|3分15秒|
|ABC131|A|◯|6分13秒|
|ABC132|A|◯|11分38秒|
|ABC133|A|◯|4分41秒|
|ABC132|B|◯|21分8秒|
|ABC133|B|✕|28分7秒|
|ABC134|B|◯|6分11秒|
|ABC145|B|✕|26分58秒|
|ABC136|B|◯|28分|
|ABC147|C|✕|27分37秒|
|ABC148|C|✕|29分17秒|

## ABC129_A

問題:[Airplane]
(https://atcoder.jp/contests/abc129/tasks/abc129_a)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;

int main(){
    int p,q,r;
    cin >> p >> q >> r;
    int sum_a = p+q;
    int sum_b = q+r;
    int sum_c = r+p;
    cout << min(min(sum_a,sum_b),sum_c) << endl;
}

```

解くのにかかった時間：5分4秒


## ABC130_A

問題:[Rounding]
(https://atcoder.jp/contests/abc130/tasks/abc130_a)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;

int main(){
    int x,a;
    cin >> x >> a;
    if(x < a) cout << 0 << endl;
    else cout << 10 << endl;
}

```

解くのにかかった時間：3分15秒


## ABC131_A

問題:[Security]
(https://atcoder.jp/contests/abc131/tasks/abc131_a)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;

int main(){
    string s;
    cin >> s;
    rep(i,s.size()){
        if(s[i] == s[i+1]){
            cout << "Bad" << endl;
            return 0;
        }
    }
    cout << "Good" << endl;
}

```

解くのにかかった時間：6分13秒


## ABC132_A

問題:[Fifty-Fifty]
(https://atcoder.jp/contests/abc132/tasks/abc132_a)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;

int main(){
    string s;
    cin >> s;
    int res = 1;
    sort(s.begin(),s.end());
    if(s[0] == s[1] && s[2] == s[3] && s[1] != s[2]) cout << "Yes" << endl;
    else cout << "No" << endl;
}

```

解くのにかかった時間：11分38秒


## ABC133_A

問題:[T or T]
(https://atcoder.jp/contests/abc133/tasks/abc133_a)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;

int main(){
    int n,a,b;
    cin >> n >> a >> b;
    int sum_1 = n*a;
    int sum_2 = b;
    cout << min(sum_1,sum_2) << endl;
}

```

解くのにかかった時間：4分41秒

## ABC132_B

問題:[Ordinary Number]
(https://atcoder.jp/contests/abc132/tasks/abc132_b)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;

int main(){
    int n;
    cin >> n;
    vector<int> p(n);
    rep(i,n){
        cin >> p[i];
    }
    int res = 0;
    for(int i = 1;i < n-1;i++){
        if(p[i-1] < p[i] && p[i] < p[i+1]) res++;
        else if (p[i+1] < p[i] && p[i] < p[i-1]) res++;
    }
    cout << res << endl;
}

```

解くのにかかった時間：21分8秒



## ABC133_B

問題:[Good Distance]
(https://atcoder.jp/contests/abc133/tasks/abc133_b)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;

int main(){
    int n,d;
    cin >> n >> d;
    vector<vector<int>> x(n,vector<int>(d));
    rep(i,n){
        rep(j,d){
            cin >> x[i][j];
        }
    }
    int res = 0;
    rep(i,n){
        rep(j,i){
            int sq = 0;
            rep(k,d){
                int s = x[i][k] - x[j][k];
                sq += s*s;
            }
            int s = sqrt(sq)+0.5;
            if (s*s == sq) res++;
        }
    }
    cout << res << endl;
}

```

解くのにかかった時間：28分7秒


## ABC134_B

問題:[https://atcoder.jp/contests/abc134/tasks/abc134_b]
(Golden Apple)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;

int main(){
    int n,d;
    cin >> n >> d;
    int s = n/(2*d + 1);
    if(n%(2*d+1) != 0) s+= 1;
    cout << s << endl;
}

```

解くのにかかった時間：6分11秒


## ABC135_B

問題:[0 or 1 Swap]
(https://atcoder.jp/contests/abc135/tasks/abc135_b)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;

int main(){
    int n;
    cin >> n;
    vector<int> p(n);
    rep(i,n) cin >> p[i];
    vector<int> q(n);
    int k = 0;
    rep(i,n){
        if(p[i] != i + 1) k++;
    }
    if(k <= 2) cout << "YES" << endl;
    else cout << "NO" << endl;
}

```

解くのにかかった時間：26分58秒


## ABC136_B

問題:[Uneven Numbers]
(https://atcoder.jp/contests/abc136/tasks/abc136_b)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 1;i <= (n);i++)
using namespace std;

int main(){
    int n;
    cin >> n;
    int res = 0;
    rep(i,n){
        string s = to_string(i);
        if (s.size()%2 != 0) res++; 
    }
    cout << res << endl;
}

```

解くのにかかった時間：28分


## ABC147_C

問題:[HonestOrUnkind2]
(https://atcoder.jp/contests/abc147/tasks/abc147_c)


```c++

#include <bits/stdc++.h>
#define rep(i,n) for (int i = 0; i < (n); ++i)
using namespace std;
typedef long long ll;

int g[15][15];

int main() {
  int n;
  cin >> n;
  rep(i,n)rep(j,n) g[i][j] = -1;
  rep(i,n) {
    int m;
    cin >> m;
    rep(j,m) {
      int a, x;
      cin >> a >> x;
      a--;
      g[i][a] = x;
    }
  }
  int ans = 0;
  rep(i,1<<n) {
    vector<int> d(n);
    rep(j,n) if (i>>j&1) {
      d[j] = 1;
    }
    bool ok = true;
    rep(j,n) {
      if (d[j]) {
        rep(k,n) {
          if (g[j][k] == -1) continue;
          if (g[j][k] != d[k]) ok = false;
        }
      }
    }
    if (ok) ans = max(ans, __builtin_popcount(i));
  }
  cout << ans << endl;
  return 0;
}


```

解くのにかかった時間：27分37秒
感想:やはりbit計算に慣れない


## ABC148_C

問題:[Snack]
(https://atcoder.jp/contests/abc148/tasks/abc148_c)


```c++

#include<bits/stdc++.h>
using namespace std;

int main(){
    int64_t A, B;
    cin >> A >> B;
    for(int i = 1; i <= B; i++){
        if((A * i) % B == 0){
        cout << A * i << endl;
        break;
        }
    }
    return 0;
}

```

解くのにかかった時間：29分17秒
感想：最小公倍数の解き方を理解した。


###最後に
A問題は平均6分10秒、B問題は平均18分13秒で解き終わりました。


|難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|A|6分10秒|5問中5問|
|B|18分13秒|3問中5問|