AtCoder 生活　24日目

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

#24日目
今回は、バーチャル参加を3回、そしてABC162に参加しました。


![スクリーンショット 2020-04-12 20.38.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606053/e1f52be7-c148-5926-3fe8-a59d93f4f9fc.png)

![スクリーンショット 2020-04-12 20.39.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606053/cb29be6c-d152-c40f-ef1e-288545ba9b14.png)
![スクリーンショット 2020-04-12 20.39.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606053/0c5e387d-ca9e-6ca2-2849-dd82ef060f39.png)
![スクリーンショット 2020-04-12 22.41.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606053/8b3876ab-03de-4dff-70ba-04dda99357ac.png)

##[ABC126](https://atcoder.jp/contests/abc126)

###A

```c++

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

int main(){
    int n,k;
    cin >> n >> k;
    string s;
    cin >> s;
    rep(i,n){
        if(i == (k-1)){
            if(s[i] == 'A') cout << 'a';
            if(s[i] == 'B') cout << 'b';
            if(s[i] == 'C') cout << 'c';
        }
        else cout << s[i];
    }
}

```

###B


```c++

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

int main(){
    int a;
    cin >> a;
    if(a/100 <=12 && a/100 >0){
        if(a%100 <= 12 && a%100) cout << "AMBIGUOUS" << endl;
        else cout << "MMYY" << endl;
    }
    else{
        if(a%100 <= 12 && a%100) cout << "YYMM" << endl;
        else cout << "NA" << endl;
    }
}

```

###C


```c++

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

int main(){
    double n,k;
    cin >> n >> k;
    double sum = 0;
    double s = 0.5;
    for(int i = 1;i <= n;i++){
        double t = 1/n;
        int res = 0;
        int sum_1 = i;
        while(sum_1 < k){
            sum_1 *= 2;
            res++;
        }
        sum += t*pow(s,res);
    }
    cout << fixed  << setprecision(10) << sum << endl;
}

```

##[ABC127](https://atcoder.jp/contests/abc127)

###A

```c++

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

int main(){
    int a,b;
    cin >> a >> b;
    if(a >= 13) cout << b << endl;
    else if(a < 13 && a >= 6) cout << b/2 << endl;
    else if(a < 6) cout << 0 << endl;
}

```

###B


```c++

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

int main(){
    int r,d;
    cin >> r >> d;
    vector<int> x(11);
    cin >> x[0];
    rep(i,10){
        x[i+1] == r * x[i] - d;
        cout << x[i+1] << endl;
    }
}

```

###C


```c++

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

int main(){
    int n,m;
    cin >> n >> m;
    vector<pii> p(m);
    rep(i,m){
        int l,r;
        cin >> l >> r;
        p[i].first = l;
        p[i].second = r;
    }
    int a_min = 0,a_max = 2e9;
    rep(i,m){
        a_min = max(a_min,p[i].first);
        a_max = min(a_max,p[i].second);
    }
    int ans = a_max - a_min;
    if(ans >= 0)cout << ans + 1 << endl;
    else cout << 0 << endl;
}

```
感想:しばらくfor文でぶん回していてTLEになってしまい、時間が切れ寸前に気づいて間に合わなかった。


##[ABC128](https://atcoder.jp/contests/abc128)

###A

```c++

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

int main(){
    int a,p;
    cin >> a >> p;
    int sum = a * 3 +p;
    cout << sum/2 << endl;
}

```

###B


```c++

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

int main(){
    int n;
    cin >> n;
    vector<pair<pii,int>> q(n);
    rep(i,n){
        string s;
        int p;
        cin >> s >> p;
        q[i].first.first = s;
        q[i].first.second = -p;
      	q[i].second = i + 1;
    }
    sort(q.begin(),q.end());
    rep(i,n) cout << q[i].second << endl;
}

```

###C


```c++

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

int main(){
    int k,m;
    cin >> k >> m;
    vector<vector<int>> vec(m);
    rep(i,m){
        int k; cin >> k;
        vec[i].resize(k);
        rep(j,k){
            cin >> vec[i][j];
            vec[i][j]--;
        }
    }
    vector<int> p(m);
    rep(i,m) cin >> p[i];
    int ans = 0;
    for(int i; i < (1 << k);i++){
        bool ok = true;
        for(int j = 0;j < m;j++){
            int c = 0;
            for(int id : vec[j]){
                if((i >> id) & 1){
                    c++;
                }
            }
            c %= 2;
            if(c != p[j]){
                ok = false;
            }
        }
        if(ok){
            ans++;
        }
    }
    cout << ans << endl;
}

```
感想:問題文の理解がかなりきつかったし、bit演算が本当に辛い

##[ABC162](https://atcoder.jp/contests/abc162)

###A

```c++

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

int main(){
    int n;
    cin >> n;
    if(n/100 == 7){
        cout << "Yes" << endl;
        return 0;
    }
    n %= 100;
    if(n/10 == 7){
        cout << "Yes" << endl;
        return 0;
    }
    n %= 10;
    if(n == 7){
        cout << "Yes" << endl;
        return 0;
    }
    cout << "No" << endl;
}

```

###B

```c++

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

int main(){
    int n;
    cin >> n;
    ll sum = 0;
    for(int i = 1;i <= n;i++){
        if(i%3 == 0 || i%5 == 0) continue;
        sum += i;
    }
    cout << sum << endl;
}

```

###C

```c++

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


int gcd (int a,int b, int c){
    int m = min(min(a,b),c);
    for(int i = m;i > 0;i--){
        if(a%i == 0 && b%i == 0 && c%i == 0) return i;
    }
}

int main(){
    int k;
    cin >> k;
    int sum = 0; 
    rep(a,k){
        rep(b,k){
            rep(c,k){
                sum += gcd(a,b,c);
            }
        }
    }
    cout << sum << endl;
}

```


##最後に
今回ABC162に参加した感想といえば、C問題が解けてよかったです。ただ、コードテストの結果がなかなか帰ってこなかったのでB問題はもっと早く解けていたのではないかと思います。
次の目標は、C問題までをもっと早く解くことと、あわよくばD問題を解くことです。それに向けてアルゴリズムの勉強も進めていきたいと思います。