蓝桥杯每日真题之货物摆放

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 LWH 都是 n n n 的因子,那么我们就将 n n n 的所有因子全部提取出来,然后我们对这些因子枚举 L 、 W L、W LW 即可

然后如果我们发现 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

以上是关于蓝桥杯每日真题之货物摆放的主要内容,如果未能解决你的问题,请参考以下文章

分解质因数算法案例——仓库货物摆放(蓝桥杯)

蓝桥杯每日真题之直线

蓝桥杯货物摆放思路分析

蓝桥杯货物摆放思路分析

蓝桥杯货物摆放思路分析

蓝桥杯国赛真题24Scratch货物运输 第十三届蓝桥杯 图形化编程scratch国赛真题和答案讲解