Help us understand the problem. What is going on with this article?

AtCoder 生活101日目

前回

101日目

今回は灰色diffを3問ときました。

問題 難易度 自力で解けた かかった時間
ABC055 B 3分35秒
ABC100 C 16分44秒
ABC144 C 46分41秒

ABC055_B

#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>;

const int INF = 2e9;
const int MOD = 1e9 + 7;

int main(){
    int n;
    cin >> n;
    ll ans = 1;
    rep(i,n){
        ans *= (i+1);
        ans %= MOD;
    }
    cout << ans << endl;
}

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

ABC100_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>;

const int INF = 2e9;

int CN(ll n){
    int cnt = 0;
    while(n%2 == 0 && n != 0){
        n /= 2;
        cnt++;
    }
    return cnt;
}

int main(){
    int n;
    cin >> n;
    vector<ll> a(n);
    rep(i,n)cin >> a[i];
    ll cnt = 0;
    rep(i,n){
        cnt += CN(a[i]);
    }
    cout << cnt << endl;
}

解くのにかかった時間:16分44秒

ABC144_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>;

const int INF = 2e9;

int main(){
    ll n;
    cin >> n;
    ll ans = INF;
    ll s,t;
    ll x = sqrt(n);
    for(int i = 1;i < x+1;i++){
        if(n%i == 0){
           s = i; 
        }
    }
    t = n/s;
    cout << t + s - 2 << endl;
}

解くのにかかった時間:42分21秒
感想:全然通らなくて解説見てもアプローチ一緒で自力解決するのにものすごい時間食われた。

最後に

少しずつだが感覚を取り戻せてきた気がする。次からはもう少し難しめな問題も挑戦していこうかと思う。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away