题解分享
题解分享简介
乘积数量 - 题解
```
#include <iostream>
using namespace std;
int main() {
long long n, cnt = 0;
cin >> n;
for (long long a = 1; a * a * a <= n; a++) {
for (long long b = a; a * b * b <= n; b++) {
long long max_c = n / (a * b);
if (max_c >= b) cnt += max_c - b + 1;
}
}
cout << cnt << endl;
return 0;
}
```
查看全文
0
0
0
2
乘积数量 - 题解
include
using namespace std;
int main() {
long long n,s = 0;
cin >> n;
for(long long a = 1;a a a <= n;a++) {
for(long long b = a;a b b <= n;b++) {
if(b <= n / (a b)) {//左边界必须小于右边界
s += (n / (a b) - b + 1);//s += (n / (a b) - b + 1);
// 这行代码计算了在当前 a 和 b 的条件下,C 可以取的值的数量。
//n / (a b) 是 C 的最大可能值,b - 1 是 C 的最小可能值(因为 B 必须大于 A),所
//以 n / (a b) - b + 1 就是 C 可以取的所有整数值的数量。这个值被累加到 s 上。
}
}
}
cout << s;
}
查看全文
0
0
0
2
乘积数量 - 题解
```
#include <stdio.h>
#include <math.h>
int main()
{
unsigned long long result = 0;
unsigned long long n;
scanf("%llu", &n);
unsigned long long x1 = (unsigned long long)pow(n, 1.0 / 3);
unsigned long long x2 = (unsigned long long)pow(n, 1.0 / 2);
for (unsigned long long a = 1; a <= x1+1; a++)
{
for (unsigned long long b = a; b <= x2+1; b++)
{
unsigned long long x = a * b;
if (x * b > n)
{
break;
}
unsigned long long maxc = n / x;
if (b <= maxc)
{
result += (maxc - b + 1);
}
}
}
printf("%llu\n", result);
return 0;
}
```
查看全文
0
0
0
1
乘积数量 - 题解
```C++
#include <cstdio>
int main() {
long long n;
long long res = 0;
scanf("%lld", &n);
// A*B*C <= N
// => A*B <= N/C
// => C <= N/(A*B)
// 因为 A <= B <= C
// A*A*A <= N (如果 A^3都 大于 n, 那么 A*B*C就更不用说, 肯定 > n, 所以是不合法的)
// A*B*B <= N
for (long long a = 1; a * a * a <= n; ++a) { // 注意 遍历需要使用long long, 不然乘法会爆炸
for (long long b = a; a * b * b <= n; ++b) {
long long tmp = n / (a * b) - b;
if (tmp >= 0)
res += tmp + 1; // 说明 1 ~ n/(a*b) 个 c 都是合法的
// - b 是为了保证 b < c
// + 1 是当 b == c 时候, b - c 为 0 但是计数需要+1
}
}
printf("%lld\n", res);
return 0;
}
```
查看全文
0
0
0
1
乘积数量 - 题解
```
#include
using namespace std;
int main() {
long long n, s = 0; // 声明变量n和累加器s,用于存储输入的数字
cin >> n; // 从标准输入读取一个数字,存入变量n中
for (long long a = 1; a <= n; a++) { // 外层循环,遍历a从1到
for (long long b = 1; b <= n; b++) { // 第二层循环,遍历
for (long long c = 1; c <= n; c++) { // 第三层循环,
if (a * b * c <= n&&a<=b&&b<=c) { // 判断条件,如果a*b*c小于等于n
s++; // 累加器加一
}
}
}
}
cout << s; // 将结果输出到标准输出
}
```
查看全文
0
0
-2
1



