题解分享
题解分享简介
货物摆放(结果填空) - 题解
```
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
#define N 2021041820210418
typedef long long ll;
vector<ll> v;
int cnt;
int main()
{
for(ll i=1;i<=N/i;i++)//long long对应,i是因子
{
if(N%i==0)
{
v.push_back(i);
if(i!=N/i)v.push_back(N/i);
}
}
for(ll i=0;i<v.size();i++)
for(ll j=0;j<v.size();j++)
for(ll k=0;k<v.size();k++)
if(v[i]*v[j]*v[k]==N)cnt++;
cout<<cnt<<endl;
return 0;
}
```
查看全文
0
0
1
0
货物摆放(结果填空) - 题解
```
不能用三重暴力循环,会超时,要用剪枝然后进行判断
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=2021041820210418;
ll a,b,c,ans;
bool check(int x)
{
```
if(maxn%x==0)return true;
else return false;
```
}
bool check2()
{
```
if(maxn%(a\b)==0)return true;
else return false;
```
}
int main()
{
```
//ios::sync\_with\_stdio(false),cout.tie(0),cin.tie(0);
for(a=1;a\a\a<=maxn;a++)
{
```
if(check(a))
{
for(b=a;a\*b\*b<=maxn;b++)
{
if(check2())
{
c=maxn/(a\*b);
printf("%lld %lld %lld\\n",a,b,c);
if(a==b&&a==c)ans+=1;
else if(a==b||a==c||b==c)ans+=3;
else ans+=6;
}
}
}
```
}
```
cout<<ans;
return 0;
}
```
查看全文
0
0
0
1
货物摆放(结果填空) - 题解
不学vector都能看懂的程序,但是得跑近10min的版本,人菜轻喷
```
#include<bits/stdc++.h>
using namespace std;
long long n=2021041820210418;
long long allnum[3];
long long judge()
{//判断allnum中有多少个一样的
long long a1=allnum[0],a2=allnum[1],a3=allnum[2];
if(a1!=a2 && a1!=a3 && a2!=a3) return 6;
else if(a1!=a3&&(a2==a1||a2==a3)) return 3;//2个一样
else if(a1!=a2&&(a3==a1||a3==a2)) return 3;
else if(a2!=a3&&(a1==a2||a1==a3)) return 3;
else if(a1==a2&&a1==a3) return 1;//3个一样
}
int main()
{
long long cnt=0,ans=0;
for(long long i=1;i*i*i<=n;i++)
for(long long j=1;j*j<=n/i;j++)
{
long long t=(n/i)/j;
if(i*j*t==n && i>0&&j>0&&t>0 && t>=j&&j>=i)
{
allnum[0]=i;
allnum[1]=j;
allnum[2]=t;
cout<<allnum[0]<<' '<<allnum[1]<<' '<<allnum[2]<<endl;
long long temp=judge();
ans+=judge();
cnt++;
}
}
cout<<ans<<endl;
return 0;
}
```
查看全文
0
0
0
0
货物摆放(结果填空) - 题解
还是搬砖吧,数学不好
```cpp
void solve()
{
vector<int> v;
int n = 2021041820210418;
int cnt = 0;
for (int i = 1; i <= n / i; i++)
{
if (n % i == 0)
{
v.push_back(i);
if (i != n / i) v.push_back(n / i);
}
}
for (int i = 0; i < v.size(); i++)
for (int j = 0; j < v.size(); j++)
for (int k = 0; k < v.size(); k++)
{
if (v[i] * v[j] * v[k] == n)
{
// cout << v[i] << ' ' << v[j] << ' ' << v[k] << endl;
cnt++;
}
}
cout << cnt << endl;
}
```
查看全文
0
0
0
0



