90求助
  • 板块P1729 计算e
  • 楼主cgxd
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/9 21:53
  • 上次更新2024/5/9 22:01:42
查看原帖
90求助
1272259
cgxd楼主2024/5/9 21:53
#include<bits/stdc++.h>
using namespace std;
deque<int> ans(1, 0), dq(1, 1);
int n;
deque<int> operator+(deque<int> dq1, deque<int> dq2){
	if(dq1.size() < dq2.size())
		swap(dq1, dq2);
	reverse(dq1.begin(), dq1.end());
	reverse(dq2.begin(), dq2.end());
	dq2.resize(dq1.size());
	dq1.push_back(0);
	for(size_t i = 0; i < dq2.size(); ++i){
		dq1[i] += dq2[i];
		if(dq1[i] > 9){
			dq1[i] -= 10;
			++dq1[i + 1];
		}
	}reverse(dq1.begin(), dq1.end());
	while(dq1[0] == 0)
		dq1.pop_front();
	return dq1;
}deque<int> operator/(deque<int> dq, int k){
	for(size_t i = 0; i < dq.size() - 1; ++i){
		dq[i + 1] += dq[i] % k * 10;
		dq[i] /= k;
	}dq[dq.size() - 1] /= k;
	while(dq[0] == 0)
		dq.pop_front();
	return dq;
}int main(){
	cin >> n;
	cout << "2.";
	dq.resize(n + 6);
	for(int i = 2; i <= 100000; ++i){
		if(dq.size() < log(i) / log(10) + 1)
			break;
		dq = dq / i;
		if(dq.empty())
			break;
		ans = ans + dq;
	}for(int i = 0; i < n; ++i){
		if(i % 10 == 0)
			cout << ' ';
		if(i % 50 == 0)
			cout << '\n';
		cout << ans[i];
	}return 0;
}
2024/5/9 21:53
加载中...