显示原始代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int P;
cin >> P;
int D = static_cast<int>(P * log10(2) + 1e-8) + 1;
cout << D << endl;
const int DIGITS = 500;
vector<int> res(DIGITS, 0);
res.back() = 1;
for (int i = 0; i < P; ++i) {
int carry = 0;
for (int j = DIGITS - 1; j >= 0; --j) {
int temp = res[j] * 2 + carry;
res[j] = temp % 10;
carry = temp / 10;
}
}
int borrow = 1;
for (int j = DIGITS - 1; j >= 0; --j) {
int temp = res[j] - borrow;
if (temp < 0) {
res[j] = temp + 10;
borrow = 1;
} else {
res[j] = temp;
borrow = 0;
}
}
string output;
for (int digit : res) {
output += static_cast<char>(digit + '0');
}
while (output.length() < DIGITS) {
output = '0' + output;
}
for (int i = 0; i < 10; ++i) {
cout << output.substr(i * 50, 50) << endl;
}
return 0;
}