結果
問題 | No.375 立方体のN等分 (1) |
ユーザー |
![]() |
提出日時 | 2016-06-04 23:23:06 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,476 bytes |
コンパイル時間 | 455 ms |
コンパイル使用メモリ | 67,496 KB |
最終ジャッジ日時 | 2024-11-14 19:44:57 |
合計ジャッジ時間 | 1,065 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In function ‘ll dfs(ll)’: main.cpp:28:14: error: ‘sqrt’ was not declared in this scope 28 | for (i = sqrt(n); i >= 2; i--) { | ^~~~
ソースコード
#include <iostream>#include <vector>#include <map>#include <algorithm>using namespace std;#define REP(i,s,e) for (i = s; i <= e; i++)#define rep(i,n) REP (i,0,(int)(n)-1)#define RREP(i,s,e) for (i = s; i >= e; i--)#define rrep(i,n) RREP (i,(int)(n)-1,0)#define INF (int)1e8#define MOD (int)(1e9+7)typedef long long ll;ll a[3];bool prime[1000000];map<tuple<ll,ll,ll>,ll> mp;ll dfs(ll n) {tuple<ll,ll,ll> tp = make_tuple(a[0],a[1],a[2]);if (mp.count(tp))return mp[tp];if (n == 1)return a[0] + a[1] + a[2] - 3;ll ret = 0;int i;for (i = sqrt(n); i >= 2; i--) {if (prime[i] && n % i == 0) {a[0] *= i;ret = dfs(n/i);a[0] /= i;a[1] *= i;ret = min(ret,dfs(n/i));a[1] /= i;a[2] *= i;ret = min(ret,dfs(n/i));a[2] /= i;return mp[tp] = ret;}}a[0] *= n;ret = dfs(1);a[0] /= n;a[1] *= n;ret = min(ret,dfs(1));a[1] /= n;a[2] *= n;ret = min(ret,dfs(1));a[2] /= n;return mp[tp] = ret;}int main(void) {ll i, j, n;cin >> n;rep (i,1000000) prime[i] = true;for (i = 2; i * i <= 1000000; i++) {if (prime[i]) {for (j = i*2; j <= 1000000; j+=i)prime[j] = false;}}a[0] = a[1] = a[2] = 1;cout << dfs(n) << " " << n - 1 << endl;return 0;}