AtCoder 生活　21日目

[前回](https://qiita.com/flandrescarlet237/items/fa1a0c47065452a3eea2)


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

|問題番号|難易度|自力で解けた|かかった時間|
|---|:-:|:-:|---|---|
|ABC114|A|◯|4分23秒|
|ABC115|A|◯|3分35秒|
|ABC116|A|◯|6分1秒|
|ABC117|A|◯|6分50秒|
|ABC118|A|◯|5分58秒|
|ABC117|B|◯|37分13秒|
|ABC118|B|✕|41分20秒|
|ABC119|B|◯|29分50秒|
|ABC120|B|◯|38分35秒|
|ABC121|B|✕|82分38秒|
|ABC144|C|✕|31分15秒|
|ABC145|C|✕|68分27秒|
|ABC146|C|✕|33分16秒|


## ABC114_A

問題:[753]
(https://atcoder.jp/contests/abc114/tasks/abc114_a)


```c++

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

int main(){
    int x;
    cin >> x;
    if(x == 3 || x == 5 || x == 7){
        cout << "YES" << endl;
        return 0;
    }
    cout << "NO" << endl;
}

```

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


## ABC115_A

問題:[Christmas Eve Eve Eve]
(https://atcoder.jp/contests/abc115/tasks/abc115_a)


```c++

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

int main(){
    int d;
    cin >> d;
    if(d == 25) cout << "Christmas" << endl;
    else if(d == 24) cout << "Christmas Eve" << endl;
    else if(d == 23) cout << "Christmas Eve Eve" << endl;
    else if(d == 22) cout << "Christmas Eve Eve Eve" << endl;
}

```

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



## ABC116_A

問題:[Right Triangle]
(https://atcoder.jp/contests/abc116/tasks/abc116_a)


```c++

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

int main(){
    int a,b,c;
    cin >> a >> b >> c;
    int m = max(max(a,b),c);
    int s = a*b*c/m;
    cout << s/2 << endl;
}

```

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


## ABC117_A

問題:[Entrance Examination]
(https://atcoder.jp/contests/abc117/tasks/abc117_a)


```c++

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

int main(){
    double t,x;
    cin >> t >> x;
    double ans = t/x;
    cout << fixed  << setprecision(8) << ans << endl;
}
```

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


## ABC118_A

問題:[B +/- A]
(https://atcoder.jp/contests/abc118/tasks/abc118_a)


```c++

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

int main(){
    int a,b;
    cin >> a >> b;
    if(b%a != 0) cout << b-a << endl;
    else cout << a+b << endl;
}
```

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

## ABC117_B

問題:[Polygon]
(https://atcoder.jp/contests/abc117/tasks/abc117_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> l(n);
    rep(i,n) cin >> l[i];
    int sum = 0;
    int m = 1;
    rep(i,n){
        sum += l[i];
        m = max(m,l[i]);
    }
    int res = sum - m;
    if (res > m) cout << "Yes" << endl;
    else cout << "No" << endl;
}

```

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

## ABC118_B

問題:[Foods Loved by Everyone / ]
(https://atcoder.jp/contests/abc118/tasks/abc118_b)


```c++

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

int main(){
    int n,m;
    cin >> n >> m;
    vector<int> cnt(m);
    rep(i,n){
        int k;
        cin >> k;
        rep(j,k){
            int a;
            cin >> a;
            a--;
            cnt[a]++;
        }
    }
    int ans = 0;
    rep(i,m){
        if(cnt[i] == n){
            ans++;
        }
    }
    cout << ans << endl;
}

```

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


## ABC119_B

問題:[Digital Gifts]
(https://atcoder.jp/contests/abc119/tasks/abc119_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<double> x(n);
    vector<string> u(n);
    rep(i,n){
        cin >> x[i] >> u[i];
    }
    double b = 0;
    int j;
    rep(i,n){
        if(u[i]  == "BTC") b += x[i];
        else j += x[i];
    }
    int64_t sum = b*380000 + j;
    cout << sum <<endl;
}

```

解くのにかかった時間：29分50秒

## ABC120_B

問題:[K-th Common Divisor]
(https://atcoder.jp/contests/abc120/tasks/abc120_b)


```c++

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

int main(){
    int a,b,k;
    cin >> a >> b >> k;
    int res = 0;
    rep(i,n){
        if(a % i == 0 && b % i == 0){
            res++;
        }
        if(res == k){
            cout << i << endl;
            return 0;
        }
    }
}

```

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


## ABC121_B

問題:[Can you solve this?]
(https://atcoder.jp/contests/abc121/tasks/abc121_b)


```c++

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

int main () {
    int n,m,c;
    cin >> n >> m >> c;
    vector<int> b(m);
    for(int i = 0;i<m;++i){
        cin >> b[i];
    }
    vector<vector<int>> a(n,vector<int>(m));
    rep(i,n){
        rep(j,m){
            cin >> a[i][j];
        }
    }
    int ans = 0;
    rep(i,n){
        int sum = 0;
        rep(j,m){
            sum += a[i][j] * b[j];
        }
        if ( sum + c > 0) {
            ++ ans ;
        }
    }
    cout << ans << endl ;
}

```

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


## ABC144_C

問題:[Walk on Multiplication Table]
(https://atcoder.jp/contests/abc144/tasks/abc144_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 main(){
    ll n;
    cin >> n;
    ll ans = pow(10,13);
    for(ll i = 1; i*i <= n;i++){
        if(n%i != 0)continue;
        ll j = n/i;
        ans = min(ans,i+j-2);
    }
    cout << ans << endl;
}

```

解くのにかかった時間：31分15秒
感想：forの範囲を i*i <= n で決めれることが出来たなら解けたと思う


## ABC145_C

問題:[Average Length ]
(https://atcoder.jp/contests/abc145/tasks/abc145_c)


```c++

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

int n;
int x[10],y[10];

double dist (int i,int j){
    double dx = x[i] - x[j];
    double dy = y[i] - y[j];
    return pow(dx * dx + dy * dy,0.5);
}

void solve() {
    cin >> n;
    for(int i = 1;i <= n;i++) cin >> x[i] >> y[i];
    double sum = 0.0;
    vector<int> v(n);
    for(int i = 0; i < n;i++)v[i] = i + 1;
    do {
        for(int i = 0;i < N - 1;i++) sum += dist(v[i],v[i+1]);
    }wile(next_permutation(v.begin(),v.end()));

    int Factorial = 1;
    for(int i = 2; i <= n;i++) Factorial; *= i;
    cout << fixed << setprecision(7) << sum / Factorial << endl;
    return;
}

int main(){
    solve();
}

```

解くのにかかった時間：68分27秒
感想：next_permutationを使えば解けることまでは、わかったが書き方についてまだなれていなかったので解けなかった。


## ABC146_C

問題:[Buy an Integer]
(https://atcoder.jp/contests/abc146/tasks/abc146_c)


```c++

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

int main(){
    int64_t a,b,x;
    cin >> a >> b >> x;
    int64_t l  = 0,r = pow(10,9) + 1;
    auto keta = [&](int64_t c){
        int res = 0;
        while(c){
            c /= 10;
            res++;
        }
        return res;
    };
    auto f = [&](int64_t c){
        return a * c + b * keta(c);
    };
    while(r-l > 1){
        int64_t c = (l+r)/2;
        if(f(c) <= x) l = c;
        else r = c; 
    }
    cout << l << endl;
}

```

解くのにかかった時間：33分16秒
感想：二分探索の勉強になった。


###最後に
A問題は平均5分22秒、B問題は平均34分46秒で解き終わりました。


|難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|A|5分22秒|5問中5問|
|B|34分46秒|3問中5問|