一見すると、それは高精度だと思っただけで50ポイントをピックアップしてusigned長い長い手を書いた、私が使用していない知っているアルゴリズムで問題に彼の解決策をロール - 、ホーナー法、それは道路テンプレートであってもよいが、この道を数字を覚えておく価値10 ^万の治療にタイトル、問題は、素数の桁の任意の数のモジュラス品質の金型を告げておらず、特に大きな需要の特定の回答を必要としない、おそらくそれは、デジタル品質のアナログを使用することができます
コード
1の#include <iostreamの> 2の#include <cstdioを> 3 4 使用して 名前空間STDを、 5 6のtypedef 長い 長LL。 7 8 のconst int型 MOD = 1E9 + 7 。 9 10は、 (){読み取りちゃう 11 のLLのANS = 0。チャー CH = GETCHAR()、最後=のCH。 12 一方(CH < ' 0 ' || CH> ' 9 ')最後= CH、CH = GETCHAR()。 13 一方(' 0 ' <= CH && CH <= ' 9 ')ANS =(ANS * 10 + CH- ' 0 ')%のMOD、CH = GETCHAR()。 14 もし(最後== ' - ')の戻り -ans。戻るANSを。 15 } 16 17 INT [ 110 ]、STA [ 110 ]。 18 int型 N、M、トップ= 0 。 19 20 ブールチェック(INT X){ 21 のLL TOT = 0 。 22 のために(int型 I = N; I> = 0 ; I - )TOT =(TOT * X + [I])%MOD。 23 リターン!TOT; 24 } 25 26 INT メイン(){ 27 N =(読み取り)、M = (読み取り) 28 のために(int型 I = 0 ; iが<= N; iが++)[I] = (読み取り) 29 のためには、(int型 I = 1 ; I <= M; iは++)場合(検査(I))STA [++トップ] = I。 30 のprintf(" %d個の\ n " 、上)。 31 のための(int型 i = 1 ; iが=トップ<; Iは++)のprintf(" %d個の\ n " 、STA [I])。 32 リターン 0 。 33 }