申し出を受賞 - 65と連続正シーケンスS

タイトル説明

暁明は、彼が計算するのに必要と9〜16は、彼はすぐに正しい答えは100で書いた、数学の宿題をやっていた、数学、1日の非常に好きです。彼はこれに満足していなかった。しかし、彼は(少なくとも二つの数字を含む)100がどのように多くの連続した正数列の種類疑問に思いました。18,19,20,21,22:長い前に、彼は連続した正の数と100のシーケンスの別のセットを得ました。今、あなたの質問は、あなたもすぐにすべての正と連続シーケンスS?幸運を識別することができます!

出力説明:

すべての正の出力と連続数列S. 開始昇順に従ってシーケンス番号との間の昇順で昇順

 

ソリューション:

法律を見つけるための第一の方法は、
最初のNUM、NUMを開始しました+ n個形成される配列と==合計に
あなたはこれらすべてのマイナスの数(NUM-1)はシーケンス1,2,3,4,5を構成するでしょう何の後,,,, N、およびそれらの和がN *(N + 1)/ IS 2
シーケンスの条件が満足する満足する:N *(NUM-1) + N *(N + 1)/ 2 ==和

 

第二の方法は、スライディングウィンドウ
スライディングウィンドウを使用して、大きな、右に左ポインタ、及び右番号と数、左、及び小、右に右ポインタを吐き出します

 

1  // 第一法則発見する方法、
 2  // で構成NUM回目のスタートを、シーケンスNUM + N ==合計
 3  // あなたは(NUM-1)を減算することにより、これらの数字のすべてがシーケンスを構成していることがわかりますどのような1,2,3,4,5 ,,,, N、およびそれらの和* N-(N + 1)/ 2である
 4。 // 配列の条件が満足する満足する:N *(NUM-1) + N * (N + 1)/ 2 == SUM 
5。 クラスSolution01 {
 6。 公共7      ベクトル<ベクトル< INT >> FindContinuousSequence(int型SUM){
 8          ベクトル<ベクトル< INT >> RES;
 9。         ためINT I = 1 ; Iは<SUM; ++ I)
 10          {
 11。             INTのシータ=(2 * I - 1)*(2 * I - 1)+ 8 * 和。
12              INT GEN = SQRT(シータ)。
13              もし(!GEN * GEN =シータ)は継続14              int型 A =(1 - 2 * I)+ GEN。
15              であれば(%2!= 0続けます16              ベクトル< int型 > TEMP。
17              のためのint型 J = 0; J </ 2 ; ++ J)
 18がある                  temp.push_back(私は+ J)を、
 19              res.push_back(TEMP);
 20である         }
 21れる         リターンRES;
 22である     }
 23れる };
 24  
25  // 第二の方法、スライドウィンドウ
 26  @ スライディングウィンドウを使用して、大きな、右、左、右数と結合放電の数、及び小、右および右ポインタ、左ポインタ
27  クラスソリューション{
 28  公共29      ベクトル<ベクトル< INT >> FindContinuousSequence(int型SUM){
 30          IF(SUM < 3リターン{}。
31          ベクトル<ベクトル< 整数 >> RES。
32          INTは L = 1、R = 2、S = 1 + 2 33          一方(L <R && R < 和){
 34              であれば(S == 合計){
 35                  ベクター< INT > TEMP。
36                  のためにINT J = L; J <= R; ++ j)は
 37                      temp.push_back(J)。
38                  res.push_back(TEMP)。
39              }
 40             場合(S> = 合計){
 41の                  S - = L。
42                  ++ L;
43              }
 44              {
 45                  ++ R。
46の                  S + = R。
47              }
 48          }
 49の         リターンRES。
50      }
 51 }。

 

おすすめ

転載: www.cnblogs.com/zzw1024/p/11708038.html