結果

問題 No.1730 GCD on Blackboard in yukicoder
ユーザー Mat_hMat_h
提出日時 2021-11-05 22:21:58
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
TLE  
実行時間 -
コード長 5,712 bytes
コンパイル時間 2,353 ms
コンパイル使用メモリ 186,456 KB
実行使用メモリ 18,504 KB
最終ジャッジ日時 2024-11-06 13:16:24
合計ジャッジ時間 9,039 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 TLE -
testcase_01 -- -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>

const int MAX = 510000;
const int MOD = 1e9+7;

long long fac[MAX], finv[MAX], inv[MAX]; 

#define _GLIBCXX_DEBUG
#define int long long
#define PI 3.14159265359
#define _Yes {cout<<"Yes"<<endl;}
#define _No {cout<<"No"<<endl;}
#define _YES {cout<<"YES"<<endl;}
#define _NO {cout<<"NO"<<endl;}
#define _ans {cout<<ans<<endl;}
#define _count {cout<<count<<endl;}
#define rep(i,n) for(int i=0;i<n;i++)
#define rep1(i,n) for(int i=1;i<n+1;i++)
#define ALL(obj) (obj).begin(), (obj).end()
#define rALL(obj) (obj).rbegin(), (obj).rend()

using namespace std;
 
using ll = long long;
using vc = vector<char>;
using vd = vector<double>;
using vi = vector<int>;
using vll = vector<ll>;
using vs = vector<string>;
using vvc = vector<vc>;
using vvd = vector<vd>;
using vvi = vector<vi>;
using vvll = vector<vll>;
using vvs = vector<vs>;
using pii = pair<int, int>;
using psi = pair<string, int>;
using pis = pair<int, string>;
using pic = pair<int, char>;
using pdd = pair<double, double>;
using vpii = vector<pii>;
using vpic = vector<pic>;
using vpsi = vector<psi>;
using vpis = vector<pis>;
using vpdd = vector<pdd>;
using tiii = tuple<int, int, int>;
using tsii = tuple<string, int, int>;
using tiis = tuple<int, int, string>;
using vtiii = vector<tiii>;
using mii = map<int, int>;


int FACT(ll n){if(n==0){return 1;}else{ll base=1;for(ll i=1;i<=n;i++){base*=i;}return base;}}//n!
int FACTmod(ll n, int mod){if(n==0){return 1;}else{ll base=1;for(ll i=1;i<=n;i++){base=base*i%mod;}return base;}}//n!%mod

vi DIVISOR(int n){
    vi v;
    for (int i=1;i*i<=n;i++){
        if(n%i==0) {v.push_back(i); 
        if(i*i!=n)v.push_back(n/i);}
    }
sort(ALL(v)); return v;} // 整数nの約数の昇順配列を出力


bool is_prime(long long N) {
    if (N == 1) return false;
    for (long long i = 2; i * i <= N; ++i) {
        if (N % i == 0) return false;
    }
    return true;
} //素数判定

vi VEC_PRIME(int n) {
    // エラトステネスのふるい
    vi v;
    bitset<1000000> is_prime(0); // 十分大きなサイズを確保します
    for (int i = 2; i <= n; ++i) is_prime.set(i); // とりあえず全部ふるいに入れます
    for (int i = 2; i <= n; ++i) {
        if (is_prime[i]) { // 素数 i を発見したら
            for (int j = i * 2; j <= n; j += i) {
                is_prime.reset(j); // i の倍数をふるい落とす
            }
        }
    }
    // 結果出力
    for (int i = 2; i <= n; ++i) {
        if (is_prime[i]) v.push_back(i);
       
    } 
    return v;
}


void NCRinit(){fac[0]=fac[1]=1;finv[0]=finv[1]=1;inv[1]=1;for(int i=2; i<MAX; i++){fac[i]=fac[i-1]*i%MOD;inv[i]=MOD-inv[MOD%i]*(MOD/i)%MOD;finv[i]=finv[i-1]*inv[i]%MOD;}}//二項係数前処理
long long NCR(int n,int k){if(n<k)return 0;if(n<0 || k<0){return 0;}return fac[n]*(finv[k]*finv[n-k]%MOD)%MOD;}// 二項係数計算/mod

long long POW(ll x, ll n) {ll ret = 1;while (n>0){if(n&1)ret*=x;x*=x;n>>=1;}return ret;}//x^n
long long POWmod(int x,int n, int mod) {long long ret=1;while(n>0) {if(n&1)ret=ret*x%mod;x=x*x%mod;n>>=1;}return ret;}//x^n%mod

ll GCD(ll x, ll y) {while(y>0){ll r=x%y;x=y;y=r;}return x;}//gcd
ll LCM(ll x, ll y){return (x/GCD(x,y))*y;}//lcm

int mNCR(int n,int r){
    if(n<r){return  0;}
    else if(r==0){return 1;}
    else{int x=1,ans=1;
    for(int i=n;i>n-r;i--){
        ans=ans*i/x;
        x++;
    }
    return ans;
    }
}//n.r小さいときのnCr

vector<pair<long long, long long> > prime_factorize(long long N) {
    vector<pair<long long, long long> > res;
    for (long long a = 2; a * a <= N; ++a) {
        if (N % a != 0) continue;
        long long ex = 0;
        while (N % a == 0) {
            ++ex;
            N /= a;
        }
        res.push_back({a, ex});
    }
    if (N != 1) res.push_back({N, 1});
    return res;
} //素因数分解

int MINVEC(vi v){
    int min=2147483647;
    int ans=0;
    int n=v.size();
    rep(i,n){
        if(v[i]<=min){min=v[i];ans=i;}
    }
    return ans;
}  //viの最小項の番号を返す;//最大番号優先

int MAXVEC(vi v){
    int max=-2147483648;
    int ans=0;
    int n=v.size();
    rep(i,n){
        if(v[i]>=max){max=v[i];ans=i;}
    }
    return ans;
}  //viの最大項の番号を返す;//最大番号優先

// aよりもbが大きいならばaをbで更新する
// (更新されたならばtrueを返す)
template <typename T>
bool chmax(T &a, const T& b) {
  if (a < b) {
    a = b;  // aをbで更新
    return true;
  }
  return false;
}
// aよりもbが小さいならばaをbで更新する
// (更新されたならばtrueを返す)
template <typename T>
bool chmin(T &a, const T& b) {
  if (a > b) {
    a = b;  // aをbで更新
    return true;
  }
  return false;
}

int MASSVEC(vi v, int x, int y){
    int ans=0;
    for(int i=x;i<=y;i++){
        ans+=v[i];
    }
    return ans;
} //ベクトルのx番目からy番目までの総和

vector<pair<int, int>> SECONDSORT(vector<pair<int,int>> v){
    int n=v.size();
    rep(i,n){swap(v[i].first,v[i].second);}
    sort(ALL(v));
    rep(i,n){swap(v[i].first,v[i].second);}
    return v;
} //vpiiをsecond優先で昇順ソート

vector<pair<int, int>> SECONDrSORT(vector<pair<int,int>> v){
    int n=v.size();
    rep(i,n){swap(v[i].first,v[i].second);}
    sort(rALL(v));
    rep(i,n){swap(v[i].first,v[i].second);}
    return v;
} //vpiiをsecond優先で降順ソート



//ABCDEFGHIJKLMNOPQRSTUVWXYZ
//abcdefghijklmnopqrstuvwxyz

signed main(void){
int n;
cin>>n;
vi v(n);
for(auto &x:v){
    cin>>x;
}
sort(ALL(v));
for(int t=0;t<n;t++){
    if(t==n-1){cout<<v[n-1]<<endl;break;}
    int gcd=GCD(v[t],v[t+1]);
    
    for(int i=t;i<n;i++){
    gcd=GCD(gcd,v[i]);
}
cout<<gcd<<endl;
}
}
0