c++,vector求助
查看原帖
c++,vector求助
1063789
RealDream楼主2024/7/11 21:57

求助,有大佬用vector解决吗? qwq

#include <bits/stdc++.h>

using namespace std;

vector<int> mult(vector<int> a, vector<int> b) {
	vector<int> ans;
	ans.reserve(10001);

	int i = 0;
	int val, x = 0;
	for (i = 0; i < (int)a.size(); i++) {
		x = 0;
		for (int j = 0; j < (int)b.size(); j++) {
			val = a[i] * b[j] + x;
			if ((int)ans.size() <= i + j) {
				ans.push_back(val % 10);
			} else {
				val += ans[i + j];
				ans[i + j] = val % 10;
			}

			x = val / 10;
		}
		if (x) ans.push_back(x);

	}
	return ans;
}

void Printf_value(vector<int>& a) {
	vector<int>::reverse_iterator iter = a.rbegin();

	for (; iter != a.rend(); iter++) {
		cout << *iter;
	}
	cout << endl;
}

void Printf_500(vector<int>& a) {
	int index = 0;
	for (int i = a.size(); i < 500; i++) {
		cout << "0";
		index = (index + 1) % 50;
		if (index == 0) cout << endl;
	}

	vector<int>::reverse_iterator iter = a.rbegin();

	for (; iter != a.rend(); iter++) {
		cout << *iter;

		index = (index + 1) % 50;
		if (index == 0) cout << endl;
	}

}

int main() {
	ios::sync_with_stdio(false);
	vector<int> a, ans;
	int n;
	cin >> n;
	a.push_back(2);
	ans.push_back(1);
	while (n != 0) {
		if (n & 1) ans = mult(ans, a);
		a = mult(a, a);
		n /= 2;
	}

	cout << ans.size() << endl;
	ans[0]--;
	Printf_500(ans);

	return 0;
}
2024/7/11 21:57
加载中...