显示原始代码
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
const int maxn = 500;
int char2int(char a) {
int n;
n = int(a) - int('0');
return n;
}
char int2char(int n) {
char a;
int x;
x = n - int('0');
a = char(x);
return a;
}
string jia(string a, string b) {
int i, x = 0;
string c(maxn, '0');
for (i = maxn - 1; i >= 0; i--) {
x = char2int(a[i]) + char2int(b[i]) + x;
c[i] = x % 10 + int('0');
x = x / 10;
}
return c;
}
string cheng1(string a, char b) {
int i, x = 0;
string c(maxn, '0');
char g;
for (i = maxn - 1; i >= 0; i--) {
x = char2int(a[i]) * char2int(b) + x;
g = x % 10 + int('0');
c[i] = g;
x = x / 10;
}
return c;
}
string yi_wei(string a, int n) {
int i;
for (i = 0; i < maxn - n; i++) {
a[i] = a[i + n];
}
for (i = maxn - n; i < maxn; i++) {
a[i] = '0';
}
return a;
}
string cheng2(string a, string b) {
int i, n;
string x(maxn, '0'), c(maxn, '0');
for (i = maxn - 1; i >= 0; i--) {
x = cheng1(a, b[i]);
x = yi_wei(x, maxn - i - 1);
c = jia(x, c);
}
return c;
}
string kuai_su_mi(int r) {
string s(maxn, '0'), m(maxn, '0');
m[maxn - 1] = '2';
s[maxn - 1] = '1';
int d;
while (r > 0) {
d = r % 2;
if (d == 1) {
s = cheng2(s, m);
}
r = r / 2;
m = cheng2(m, m);
}
return s;
}
void shu_chu(string s) {
int i, j;
for (j = 10; j >= 1; j--) {
for (i = maxn - j * 50; i < maxn - (j - 1) * 50; i++) {
cout << s[i];
}
cout << endl;
}
}
int main() {
int r;
cin >> r;
double n, R;
R = double(r);
n = log10(2) * R + double(1);
cout << int(n) << endl;
string s;
s = kuai_su_mi(r);
int x;
char y;
x = s[maxn - 1];
y = x - 1;
s[maxn - 1] = y;
shu_chu(s);
return 0;
}