C/C++ 版本
// 階層範例
// (C) 2014 Stubio Awei.
// 2014/1/15
// Source.cpp
#include <iostream>
using namespace std;
int main()
{
const int SIZE_SUM = 100; // 存放運算結果之陣列大小
const int LENGTH_SUM = SIZE_SUM -1; // 存放運算結果之陣列長度
int sum[SIZE_SUM]; // 存放運算結果之陣列
int N = 12; // 階層數
int temp = 0; // 暫存,乘開後放置
int temp0 = 0; // 暫存,進位數
memset(sum, 0, sizeof(sum)); // 將 sum 全部初始化為零 (0)
sum[0] = 1; // 階層第一個數都為 1 ,故先給予設定
for (int i = 2; i < N + 1; i++)
{
for (int j = 0; j < SIZE_SUM; j++)
{
temp = sum[j] * i + temp0; // 將該位數的數值乘出來,並將上一個進位數加起來
sum[j] = temp%10; // 取得 temp 所乘出的個位數數字,使用餘除
temp0 = temp/10; // 取得 temp 所乘出的十位數以上數值
}
}
for (int i = LENGTH_SUM; i>-1; i--)
{
// 取得運算出來的數值長度
if (sum[i] != 0)
{
N = i;
break;
}
}
// 輸出運算結果 sum
for (int i = N; i >-1; i--)
{
cout << sum[i];
}
cout << endl;
system("pause");
}
VB 版本
// 階層範例
Module Module1
Sub Main()
Const SIZE_SUM As Integer = 100 ' 存放運算結果之陣列大小
Const LENGTH_SUM As Integer = SIZE_SUM - 1 ' 存放運算結果之陣列長度
Dim sum(SIZE_SUM) As Integer ' 存放運算結果之陣列
Dim N As Integer = 12 ' 階層數
Dim temp As Integer = 0 ' 暫存,乘開後放置
Dim temp0 As Integer = 0 ' 暫存,進位數
sum(0) = 1 ' 階層第一個數都為 1 ,故先給予設定
For i As Integer = 2 To N
For j As Integer = 0 To SIZE_SUM
temp = sum(j) * i + temp0 ' 將該位數的數值乘出來,並將上一個進位數加起來
sum(j) = temp Mod 10 ' 取得 temp 所乘出的個位數數字,使用餘除
temp0 = temp \ 10 ' 取得 temp 所乘出的十位數以上數值
Next
Next
For i As Integer = LENGTH_SUM To 0 Step -1
' 取得運算出來的數值長度
If Not sum(i) = 0 Then
N = i
Exit For
End If
Next
' 輸出運算結果 sum
For i As Integer = N To 0 Step -1
Console.Write(sum(i))
Next
Console.WriteLine()
Console.Read()
End Sub
End Module
沒有留言:
張貼留言