社区讨论
90分,大佬带我
P1249最大乘积参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo7ld6sj
- 此快照首次捕获于
- 2023/10/27 03:42 2 年前
- 此快照最后确认于
- 2023/10/27 03:42 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
long long a, b = 1, c = 0;
int y[20001], m = 20000;
void nb(int x) {
y[0] = 1;
for (int i = 2; i <= x; i++) {
for (int k = 0; k < 20001; k++)
y[k] *= i;
for (int k = 0; k < 20001; k++)
if (y[k] > 9) {
y[k + 1] += y[k] / 10;
y[k] %= 10;
}
}
}
int main() {
cin >> a;
if (a == 3) {
cout << 1 << " " << 2 << endl << 2;
return 0;
}if (a == 4) {
cout << 1 << " " << 3 << endl << 3;
return 0;
}
if (a > 4) {
while (c < a) {
b++;
c += b;
}
if (c == a) {
for (int i = 2; i <= b; i++)
cout << i << " ";
cout << endl;
nb(b);
for (m; m >= 0; m--)
cout << y[m];
}if (c - a == 1) {
y[0] = 1;
for (int i = 3; i <= b + 1; i++) {
if (i == b) continue;
cout << i << " ";
for (int k = 0; k < 20001; k++)
y[k] *= i;
for (int k = 0; k < 20001; k++)
if (y[k] > 9) {
y[k + 1] += y[k] / 10;
y[k] %= 10;
}
}cout << endl;
for (m; m >= 0; m--)
cout << y[m];
}if (c > a + 1) {
long long p = c - a;
y[0] = 1;
for (int i = 2; i <= b; i++) {
if (i == p) continue;
cout << i << " ";
for (int k = 0; k < 20001; k++)
y[k] *= i;
for (int k = 0; k < 20001; k++)
if (y[k] > 9) {
y[k + 1] += y[k] / 10;
y[k] %= 10;
}
}cout << endl;
while (y[m] == 0 && m > 0) m--;
for (m; m >= 0; m--)
cout << y[m];
}
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...