如下:
#include <bits/stdc++.h>
using namespace std;
const int N = 205, L = 505;
int n, a[N], p;
int flag, ans[L];
void mul(int x){
for(int i = 1; i < 500; i ++) ans[i] *= x;
for(int i = 1; i < 500; i ++){
ans[i + 1] += ans[i] / 10;
ans[i] %= 10;
}
}
int main(){
cin >> n;
ans[1] = 1;
if(n <= 4){
cout << n << '\n' << n;
return 0;
}
for(int i = 2; i < N; i ++){
if(n < i) break;
a[++ p] = i;
n -= i;
}
for(int i = p - n + 1; i <= p; i ++) a[i] ++;
//if(n > p) a[p] ++;
for(int i = 1; i <= p; i ++){
cout << a[i] << ' ';
mul(a[i]);
}
cout << '\n';
for(int i = 500; i >= 1; i --){
if(ans[i] || i == 1) flag = 1;
if(flag) cout << ans[i];
}
return 0;
}
第 26 行,将 if(n > p) a[p] ++ 注释掉后,本来应该出错,但在你谷上可以 AC
请求加入下列数据:
输入:
8
正确输出:
3 5
15
错误输出:
3 4
12