第十二届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组 试题 D: 货物摆放
题目
答案
2430
解法一:枚举所有积为n的三个正整数
解析
很显然可以用两重循环,枚举积为n的所有三个正整数。
假设 abc = n 且 a <=b <=c 那么当前三个正整数a、b、c为一个解。
注意n值过大,剪枝尤为关键:若是i不是n的因子,就continue。
第二重循环若j不是(n/i)的因子,就continue。
判断三个数a <=b <=c是去重。
代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ll n = 2021041820210418L;
ll ans = 0;
for(ll i = 1;i*i*i <=n;i++){
if(n%i != 0) continue; //若是i不是n的因子,就continue。
ll tmp = n