トピックソース
2021年ブルーブリッジカップ州
トピックリンク:https ://www.lanqiao.cn/problems/1463/learning/
テストセンター
数論、暴力
ビデオ説明
https://www.bilibili.com/video/BV1H3411H7mW/
アイデア
まず第一に、L、W、HL、W、Hを見つけることは難しくありませんL 、W 、Hはすべてnnnの因数、それからnnnのすべての因子が抽出され、これらの因子のL、WL、W列挙されますLとWは
次に、LLが見つかった場合LとWWWkkの製品kはまだnnnの因数である場合、この(3つの要素)データのセットset
をset
、最終出力の要素数が答えになります。
コード
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3f
ll n;
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
// cin>>n;
n = 2021041820210418;
vector<ll> V;
V.push_back(1);
for(ll i = 2;i * i <= n; ++i) {
if(n % i == 0) {
V.push_back(i);
if(n/i == i) continue;
V.push_back(n/i);
}
}
V.push_back(n);
int l = V.size();
// cout<<"因子数为: "<<l<<endl;
set<vector<ll>> S;
for(int i = 0;i < l; ++i) {
for(int j = 0;j < l; ++j) {
ll k = V[i] * V[j];
if(n % k) continue;
vector<ll> t;
t.push_back(V[i]);
t.push_back(V[j]);
t.push_back(n/k);
S.insert(t);
}
}
cout<<S.size()<<endl;
return 0;
}
24302430として答えを得る2 4 3 0