最后一个点RE!
  • 板块P1249 最大乘积
  • 楼主cc_tt
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/4/6 10:34
  • 上次更新2023/10/28 04:28:27
查看原帖
最后一个点RE!
687239
cc_tt楼主2022/4/6 10:34
#include<bits/stdc++.h>

using namespace std;

int n;
int nums[20000];
int pos = 1;
//计算乘积
void compute(int num) {
	int pre = 0;
	int i = 1;
	for (; i <= pos; i++) {
		int curr = (nums[i] * num + pre) % 10;
		pre = (nums[i] * num + pre) / 10;
		nums[i] = curr;
	}
	while (pre > 0) {
		nums[i] = pre % 10;
		pre /= 10;
		i++;
	}
	pos = i - 1;
}
int main() {
	cin >> n;
	nums[1] = 1;
	vector<int>memo;
	int curr = 2;
	//得到2,3,..,k,其中2+3+..+k>n
	while (n > 0) {
		memo.push_back(curr);
		n -= curr;
		curr++;
	}
   //去掉其中等于2+3+..+k-n的值
	memo[abs(n) - 2] = 1;
   //计算最大乘积
	for (int i = 0; i <= memo.size() - 1; i++) {
		if (memo[i] != 1) {
			compute(memo[i]);
			cout<<memo[i]<<" ";
		}
	}
	cout<<endl;
	for (int i = pos; i >= 1; i--) {
		cout<<nums[i];
	}
}
2022/4/6 10:34
加载中...