HDU1023——Train Problem II
题目描述
Problem - 1023

运行代码
#include <iomanip>
#include <iostream>
using namespace std;
void init_a(int a[101][101]);
void printa(int a[101][101], int n);
int main(int ac, char** av) {
int a[101][101] = { 0 };
init_a(a); // 初始化结果
for (int i = 1; i != 101; ++i) {
printa(a, i);
}
return 0;
}
void printa(int a[101][101], int n) {
int j = a[n][0];
if (a[n][j] == 0) {
;
}
else {
cout << a[n][j];
}
--j;
for (; j != 0; --j) {
cout << setw(4) << setfill('0')
<< a[n][j]; // 去除 0356 0056 之类情况 !
}
cout << endl;
}
void init_a(int a[101][101]) {
a[1][1] = 1;
a[2][1] = 2;
a[1][0] = a[2][0] = 1; // a[i][0] 存放数组长度
int i = 0;
for (i = 3; i != 101; ++i) {
int flag = 0;
int temp = 0;
int j = 0;
for (j = 1; j <= a[i - 1][0]; ++j) { // 乘法部分 万位级
// 可能会出现 0000 0354 两类情况 !
temp = a[i - 1][j] * (4 * i - 2) + flag;
a[i][j] = temp % 10000;