蓝桥杯每日真题之货物摆放
Posted MangataTS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯每日真题之货物摆放相关的知识,希望对你有一定的参考价值。
题目来源
2021年蓝桥杯省赛
题目链接:https://www.lanqiao.cn/problems/1463/learning/
考点
数论、暴力
视频讲解
https://www.bilibili.com/video/BV1H3411H7mW/
思路
首先我们不难发现 L 、 W 、 H L、W、H L、W、H 都是 n n n 的因子,那么我们就将 n n n 的所有因子全部提取出来,然后我们对这些因子枚举 L 、 W L、W L、W 即可
然后如果我们发现
L
L
L 和
W
W
W 的乘积
k
k
k 仍然是
n
n
n 的因子的话我们就将这一组(三个元素)数据放进 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;
得到答案为 2430 2430 2430
以上是关于蓝桥杯每日真题之货物摆放的主要内容,如果未能解决你的问题,请参考以下文章