結果

問題 No.376 立方体のN等分 (2)
ユーザー ricky
提出日時 2016-06-04 22:40:39
言語 C++11
(gcc 4.8.5)
結果
AC  
実行時間 655 ms
コード長 1,200 Byte
コンパイル時間 1,200 ms
使用メモリ 1,816 KB
最終ジャッジ日時 2018-10-18 18:40:49

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
sample1.txt AC 3 ms
1,516 KB
sample2.txt AC 2 ms
1,512 KB
system_test1.txt AC 96 ms
1,524 KB
system_test2.txt AC 93 ms
1,528 KB
system_test3.txt AC 109 ms
1,520 KB
t01.txt AC 3 ms
1,512 KB
t02.txt AC 3 ms
1,512 KB
t03.txt AC 3 ms
1,516 KB
t04.txt AC 8 ms
1,512 KB
t05.txt AC 27 ms
1,516 KB
t06.txt AC 78 ms
1,580 KB
t07.txt AC 52 ms
1,520 KB
t08.txt AC 68 ms
1,520 KB
t09.txt AC 76 ms
1,512 KB
t10.txt AC 79 ms
1,516 KB
t11.txt AC 87 ms
1,516 KB
t12.txt AC 593 ms
1,644 KB
t13.txt AC 96 ms
1,524 KB
t14.txt AC 99 ms
1,512 KB
t15.txt AC 102 ms
1,524 KB
t16.txt AC 104 ms
1,512 KB
t17.txt AC 594 ms
1,644 KB
t18.txt AC 108 ms
1,516 KB
t19.txt AC 603 ms
1,648 KB
t20.txt AC 595 ms
1,648 KB
t21.txt AC 113 ms
1,512 KB
t22.txt AC 655 ms
1,816 KB
t23.txt AC 114 ms
1,512 KB
t24.txt AC 114 ms
1,516 KB
t25.txt AC 114 ms
1,516 KB
t26.txt AC 115 ms
1,516 KB
t27.txt AC 115 ms
1,512 KB
t28.txt AC 114 ms
1,512 KB
t29.txt AC 115 ms
1,516 KB
t30.txt AC 115 ms
1,512 KB
t31.txt AC 114 ms
1,512 KB
t32.txt AC 114 ms
1,512 KB
t33.txt AC 115 ms
1,508 KB
t34.txt AC 115 ms
1,512 KB
t35.txt AC 115 ms
1,524 KB
テストケース一括ダウンロード

ソースコード

diff #
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

#define REP(i,a,b) for(ll i=(a);i<(b);++i)
#define REPREV(i,a,b) for(ll i=(b)-1;i>=(a);--i)

#define DEBUG(x) cout<<#x<<": "<<x<<endl
#define DEBUG_VEC(v) cout<<#v<<":";REP(i,v.size())cout<<" "<<v[i];cout<<endl
#define ALL(a) (a).begin(),(a).end()

#define CHMIN(a,b) a=min((a),(b))
#define CHMAX(a,b) a=max((a),(b))

// mod
const ll MOD = 1000000007ll;
#define FIX(a) ((a)%MOD+MOD)%MOD

// floating
typedef double Real;
const Real EPS = 1e-11;
#define EQ0(x) (abs(x)<EPS)
#define EQ(a,b) (abs(a-b)<EPS)
typedef complex<Real> P;

int main(){
  ll n;
  cin>>n;
  ll tmax = n-1;
  ll tmin = n-1;
  vl yaku;
  for(ll i=1;i*i<=n;i++){
    if(n%i==0){
      yaku.push_back(i);
      if(n/i!=i)yaku.push_back(i);
    }
  }
  sort(ALL(yaku));
  int x = yaku.size();
  for(int i=0;i<x;i++){
    ll a = yaku[i];
    for(int j=i;j<x;j++){
      ll b = yaku[j];
      if(a*b>=n)break;
      if((n/a)%b!=0)continue;
      ll c = n/a/b;
      if(c<b)break;
      CHMIN(tmin,a+b+c-3);
    }
  }
  printf("%lld %lld\n",tmin,tmax);
  return 0;
}
0