AtCoder 生活　47日目

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

#47日目
今回は、A問題を4問、B問題を4問、D問題を1問解きました。

|問題|難易度|自力で解けた|かかった時間|
|:-:|:-:|:-:|---|---|
|ABC066|A|◯|3分22秒|
|ABC066|B|✕|108分29秒|
|ABC054|A|◯|5分30秒|
|ABC054|B|✕|103分33秒|
|ABC041|A|◯|1分3秒|
|ABC041|B|◯|16分9秒|
|ABC040|A|◯|6分6秒|
|ABC040|B|✕|175分48秒|
|ABC144|D|✕|129分37秒|


##[ABC066](https://atcoder.jp/contests/abc066)

###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,c;
    cin >> a >> b >> c;
    int m;
    m = max({a,b,c});
    cout << a+b+c-m << endl;
}

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


###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>;
using pil = pair<pii,int>;


int main(){
    string s;
    cin >> s;
    int t = s.size();
    for(int i = t-2;i >= 0 ;i -= 2){
        string a = s.substr(0,i/2);
        string b = s.substr(i/2,i/2);
        if(a == b){
            cout << i << endl;
            break;
        }
    }
}


```
解くのにかかった時間：108分29秒
感想：問題文に惑わされた


##[ABC054](https://atcoder.jp/contests/abc054)

###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 == 1)a = 14;
    if(b == 1)b = 14;
    if(a < b)cout << "Bob" << endl;
    if(a == b)cout << "Draw" << endl;
    if(a > b)cout << "Alice" << endl;
}

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


###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>;
using pil = pair<pii,int>;


int main(){
    int n,m;
    cin >> n >> m;
    vector<vector<char>> a(n,vector<char>(n));
    vector<vector<char>> b(n,vector<char>(n));
    rep(i,n){
        rep(j,n){
            cin >> a[i][j];
        }
    }
    rep(i,m){
        rep(j,m){
            cin >> b[i][j];
        }
    }
    bool exist = false;
    rep(ly,n){
        rep(lx,n){
            if(ly + m > n || lx + m > n){
                continue;
            }
            bool match = true;
            rep(y,m){
                rep(x,m){
                    if(a[ly+y][lx+x] != b[x][y]) match = false;
                }
            }
            if(match){
                exist = true;
            }
        }
    }
    if(exist) cout << "Yes" << endl;
    else cout << "No" << endl;
}

```
解くのにかかった時間：103分33秒
感想：緑diffがB問題なのはひどい


##[ABC041](https://atcoder.jp/contests/abc041)

###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(){
    string s;
    int i;
    cin >> s >> i;
    cout << s[i-1];
}

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


###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>;
using pil = pair<pii,int>;

ll t = pow(10,9);

int main(){
    ll a,b,c;
    cin >> a >> b >> c;
    t += 7;
    ll s = a*b%t;
    ll ans = c*s%t;
    cout << ans << endl;
}

```
解くのにかかった時間：16分9秒


##[ABC040](https://atcoder.jp/contests/abc040)

###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,x;
    cin >> n >> x;
    cout << min((x-1),(n-x-1)) << endl;
}

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


###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>;
using pil = pair<pii,int>;

int INF = 2e9;

int main(){
    int n;
    cin >> n;
    int ans = INF;
    for(int h = 1;h <= sqrt(n);h++){
        int w = 1;
        while(h*w <= n){
            ans = min(ans,abs(h-w) + (n - h*w));
            w++;
        }
    }
    cout << ans << endl;
}

```
解くのにかかった時間：175分48秒
感想：計算方法を理解するのに時間をかけすぎた


##[ABC144_D](https://atcoder.jp/contests/abc144/tasks/abc144_d)

```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(){
    double a, b, x; cin >> a >> b >> x;
    double ans;
    if(a*a*b/2.0 >= x) ans = atan(a*b*b/(2*x));
    else{
        double y = a*a*b - x;
        ans = atan(2*y/(a*a*a));
    }
    ans *= 180/acos(-1.0);
    cout << fixed << setprecision(10) << ans << endl; 
}

```

解くのにかかった時間：129分37秒
感想：どんな計算が行われているのかがわからない。


###最後に
今回、B問題とD問題を解いた感想として、計算問題という面で難しく感じた。
競プロのための計算練習ってしたほうが良さそうに感じる。

難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|A|3分26秒|4問中4問|
|B|16分9秒|4問中1問|