acmer10 题解分享 · 2024/4/5
货物摆放(结果填空) - 题解
``` #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
fpy游戏人生 题解分享 · 2024/4/12
货物摆放(结果填空) - 题解
``` 不能用三重暴力循环,会超时,要用剪枝然后进行判断 #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
百战 题解分享 · 2024/4/13
货物摆放(结果填空) - 题解
不学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
kaisyuantseng 题解分享 · 2024/4/10
货物摆放(结果填空) - 题解
还是搬砖吧,数学不好 ```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