結果
| 問題 | No.3776 Magic Square of Product |
| コンテスト | |
| ユーザー |
Tuchmos
|
| 提出日時 | 2026-10-24 01:48:59 |
| 言語 | C++23(gcc16) (gcc 16.2.0 + boost 1.92.0 + ACL) |
| 結果 |
RE
不安定
|
| 実行時間 | - |
| コード長 | 2,009 bytes |
| 記録 | |
| コンパイル時間 | 7,461 ms |
| コンパイル使用メモリ | 392,720 KB |
| 実行使用メモリ | 9,868 KB |
| 最終ジャッジ日時 | 2026-10-24 01:49:15 |
| 合計ジャッジ時間 | 14,931 ms |
|
ジャッジサーバーID (参考情報) |
judge5_0 / judge4_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | RE * 1 TLE * 1 -- * 23 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
#define all(s) (s).begin(), (s).end()
#define rall(s) (s).rbegin(), (s).rend()
#define rep(i,l,r) for(int i=l;i<r;i++)
#define rrep(i,r,l) for(int i=r;i>l;i--)
using ll=long long;
using mint=modint998244353;
//https://atcoder.jp/contests/adt_all_20260924_2/submissions/79473125
vector<int> smallest_prime_factor(int n){
vector<int> res(n+1);
iota(res.begin(),res.end(),0);
for(int i=2;i*i<=n;i++){
if(res[i]==i){
for(int j=i;j<=n;j+=i){
if(res[j]==j)res[j]=i;
}
}
}
return res;
}
vector<int> spf=smallest_prime_factor(1000001);
map<int,int> prime_factorization(int n){
map<int,int> factors;
int current=n;
while(current>1){
factors[spf[current]]++;
current/=spf[current];
}
return factors;
}
vector<int> divisors(int n){
auto factors=prime_factorization(n);
vector<int> divs={1};
for(auto [p,e] :factors){
int m=divs.size();
int mul=1;
for(int k=1;k<=e;k++){
mul*=p;
for(int j=0;j<m;j++){
divs.push_back(divs[j]*mul);
}
}
}
return divs;
}
int solve(ll K){
auto D=divisors(K);
int N=D.size();
int ans=0;
rep(i,0,N)rep(j,0,N){
if(K%(D[i]*D[j]))continue;
int a=D[i];
int b=D[j];
int c=K/a/b;
auto D1=divisors(K/a);
auto D2=divisors(K/b);
for(int d:D1){
int e=K/a/d;
for(int f:D2){
if(K%(d*f)||K%(b*f))continue;
int h=K/d/f;
int g=K/b/f;
if(K%(c*h))continue;
int l=K/c/h;
if((ll)e*g*l==K)ans++;
}
}
}
return ans;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;cin>>T;
while(T--){
ll K;cin>>K;
cout<<solve(K)<<'\n';
}
}
Tuchmos