40分求助!!
  • 板块P1249 最大乘积
  • 楼主Centuy
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/2/5 12:15
  • 上次更新2025/2/5 16:27:04
查看原帖
40分求助!!
1358949
Centuy楼主2025/2/5 12:15
#include <bits/stdc++.h>
using namespace std;
int n, sum, cnt;
string ans;

string JiaFa(string a, string b) {
	string c = "";
	int la = a.size();
	int lb = b.size();
	if (la > lb) {
		for (int i = 0; i < la - lb; i++) {
			b = '0' + b;
		}
	}
	if (la < lb) {
		for (int i = 0; i < lb - la; i++) {
			a = '0' + a;
		}
	}
//	cout << a << endl << b << endl;
	int tmp = 0;
	for (int i = a.size() - 1; i >= 0; i--) {
		int k = (a[i] - '0') + (b[i] - '0') + tmp;
		c =  char(k % 10 + '0') + c;
		tmp = k / 10;
	}
	if (tmp == 1) {
		c = '1' + c;
	}
	return c;
}

string ChengFa(string a, string b) {
	string c = "";
//	cout << JiaFa(a, b);
	int tl = 0;
	for (int i = b.size() - 1; i >= 0; i--) {
		int tmp = 0;
		string t = "";
		for (int j = a.size() - 1; j >= 0; j--) {
//			cout << a[j] << "   " << b[i] << endl;
			int k = (b[i] - '0') * (a[j] - '0') + tmp;
			tmp = k / 10;
//			cout << k << endl;
//			cout << t << endl;
			t = char(k % 10 + '0') + t;
//			cout << t << endl;
		}
//		cout << t << endl;
		if (tmp != 0) {
			t = char(tmp + '0') + t;
		}
//		cout << t << endl;
		for (int j = 0; j < tl; j++) {
			t += '0';
		}
//		cout << t << endl;
		c = JiaFa(c, t);
		tl++;
	}
	if (a == "0" || b == "0") {
		return "0";
	}
	return c;
}

int main() {
	ans = "1";
	cin >> n;
	for (cnt = 2;; cnt++) {
		sum += cnt;
		if (sum >= n) {
			break;
		}
	}
	if (n <= 4) {
		cout << n << endl << n;
		return 0;
	}
	if (sum == n) {
		for (int i = 2; i <= cnt; i++) {
			cout << i << ' ';
			char c = char(i + '0');
			std::string s;
			s = c;
			ans = ChengFa(ans, s);
		}
		cout << endl;
		cout << ans;
	} else {
		int a = sum - n;
		if (a == 1) {
			for (int i = 2; i <= cnt; i++) {
				if (i == 2) {
					continue;
				}
				if (i == cnt) {
					i++;
				}
				cout << i << ' ';
				char c = char(i + '0');
				std::string s;
				s = c;
				ans = ChengFa(ans, s);
			}
		} else {
			for (int i = 2; i <= cnt; i++) {
				if (i == a) {
					continue;
				}
				cout << i << ' ';
				char c = char(i + '0');
				std::string s;
				s = c;
				ans = ChengFa(ans, s);
			}
		}
		cout << endl;
		cout << ans;
	}

	return 0;
}

2025/2/5 12:15
加载中...