結果

問題 No.312 置換処理
ユーザー itezpaceitezpace
提出日時 2016-09-09 09:44:07
言語 C++11
(gcc 11.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,111 bytes
コンパイル時間 356 ms
コンパイル使用メモリ 57,680 KB
最終ジャッジ日時 2024-04-27 02:22:06
合計ジャッジ時間 757 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:25:8: error: ‘sqrt’ was not declared in this scope
   25 |   ll m=sqrt(n)+1;
      |        ^~~~

ソースコード

diff #

#include <iostream>
#include <vector>
#include <algorithm>
typedef long long ll;
using namespace std;

vector<ll> eratosthenes(ll m){
  vector<ll> primes(m+1);
  for(ll i=2; i<m+1; ++i){
    primes[i]=i;
  }
  for(ll i=2; i*i<m+1; ++i){
    if(primes[i]){
      for(ll j=i*i; j<m+1; j+=i){
        primes[j]=0;
      }
    }
  }
  return primes;
}

int main(){
  ll n,x;
  cin>>n;
  ll m=sqrt(n)+1;
  vector<ll> v=eratosthenes(m);
  vector<ll> v2;
  for(ll i=0; i<m; ++i){
    if(v[i]) v2.push_back(v[i]);
  }
  vector<ll> v3;
  for(ll i=0; i<v2.size(); ++i){
    ll a=v2[i];
    while(1){
      if(n%a==0){
        n/=a;
        v3.push_back(a);
      } else {
        break;
      }
    }
  }
  if(v3.size()==0){
    x=n;
  } else {
    ll c=0;
    ll c2=0;
    for(ll i=0; i<v3.size(); ++i){
      if(v3[i]==2){
        c+=1;
      } else if(v3[i]==3){
        c2+=1;
      } else {
        break;
      }
    }
    if(c>=2){
      if(c2==0) x=4;
      else x=3;
    } else if(c==1){
      if(v3.size()>1) x=v3[1];
      else x=n;
    } else if(c==0){
      x=v3[0];
    }
  }
  cout<<x<<endl;
  return 0;
}
0