Расстановка товаров в ежедневнике Женти Кубка Голубого Моста

источник темы

2021 Кубок Голубого Моста, Провинция

Ссылка на тему: https://www.lanqiao.cn/problems/1463/learning/

испытательный центр

теория чисел, насилие

Видео объяснение

https://www.bilibili.com/video/BV1H3411H7mW/

идеи

Во-первых, нетрудно найти L, W, HL, W, HL , W , H всеnnфактор n , то мы будемnnИзвлекаются все факторы n , а затем мы перечисляемL, WL, WL и W могут быть

Тогда, если мы найдем LLЛ иВВПроизведение Вт ккk все ещеnnЕсли это фактор 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 24302 4 3 0

рекомендация

отblog.csdn.net/m0_46201544/article/details/123884341