C - トレイン問題II-- Cartland番号

トピックリンク_HDU-1023

タイトル

我々はすべて知っているように電車問題Iを、イグナチオ駅の上司は、すべての列車が、厳密な増加順に来れば、すべての列車が鉄道でどのように多くの注文を出すことができることを知ってほしいです。

入力

入力は、いくつかのテストケースが含まれています。各テストケースは、数Nから成る(1 <= N <= 100)。入力は、ファイルの終わりで終了します。

出力

各テストケースについて、あなたは出力のすべての列車は、鉄道の多くの方法から抜け出すことができなければならないこと。

サンプル入力

1

2

3

10

サンプル出力

1

2

5

16796

アイデア:

よく見て、あなたは数Cartlandが、大きなポイントのこの数の範囲をご覧いただくことで、長い長いバーストので、保管のための使用アレイます。この質問は、コアは、乗算や除算の少ない数を求める大規模な番号を作ることであるべきです。

そして、(それは小さな数で動作しているため)、この乗算と除算は、我々は通常、手乗算、除算の数のカウントので、簡単なシミュレーションがあります。

以下を達成するために特定のコード:

する#include <stdio.hに> 
する#include <string.hの> 
する#include <STDLIB.H> 
の#include <アルゴリズム> 
名前空間STDを使用して、
INT [2005]; 
ボイドミュー(int型K)
{ 
    int型C = 0。
    用(INT iは= 1; I <= 2000; I ++)
    { 
        int型、U = A [I] * K + C。
        [I] = U 10%; 
        C = U / 10。
    } 

} 
ボイドチュウ(int型K)
{ 
    int型C = 0。
    以下のために(INT I 2000 =; I> = 1; i--)
    { 
        int型、U = A [I] + C。
        [I] = U / K。
        C = U%K * 10。
    } 
} 
int型のmain()
{ 
    int型のn; 
    一方、(〜のscanf( "%d個"、&N))
    {
        memset(0、はsizeof())。
         [1] = 1。
        (; I <= 2 * N I ++ INT I = N + 1)のための
        { 
            MU(I)。
        } 
        ため(INT I 1 =; I <= N + 1; I ++)
        { 
            チュウ(I)。
        } 
        INT FLOG = 0。
        以下のために(INT I 2000 =; I> = 1; i--)
        { 
            IF([I]!= 0)
            { 
                FLOG = 1。
            } 
            IF(FLOG == 1)
            { 
                のprintf( "%dの"、[I])。
            } 
        } 
        のprintf( "\ n"); 
    } 
    0を返します。
}

 

おすすめ

転載: www.cnblogs.com/HANGANG/p/11900855.html