牛のオファーお客様の安全の質問を証明するためにネットワーク41 - と連続した正のシーケンスの個数

トピック:

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

この質問は、ソリューションをたくさん持っています。実際には、多くの人々は、彼らが最初に考えるの独自の方法を持っていることを、アルゴリズムの質問を参照してください、この考え方は非常に重要です。

思考の何私の最初の方法はありますか?連続した正のシーケンスの合計等差数列の和これは、リード私は等比級数の和の式から直接有用な情報を取得したいです。2つの数の最小値であるトピック。それでは、どのくらいのほとんどを持っていますか?私たちは、アイテムの数、このシーケンスの平均量より小さく、より自然なことを知っています。しかし、ほとんどはどのくらいですか?整数配列であるトピックので、最小シーケンスは1 + 2 + 3 ... + nは = Sであり、 今最大Nを得ることができます。その

N(N + 1)/ 2 =和、 得ることができる:N- = 2 * SUM;従って、N-(N + 1)2 2 * SUM <;従って、N <=(INT)SQRT (2 *合計)。 それは、上位nの束縛を見つけること、です。我々は唯一にする必要があります[2、(int型)のsqrt(中nは 2 *合計)] トラバーサルの間ですることができます。

前のステップの後、我々は、n個の狭い範囲を横断し、今の質問をする:2は、(int型)SQRT(2 *合計)]満たされている合計の間のすべてのnは、合計あなたに等しいです。明らかではない、ほんの数を満たす特定の特性は、n個の合計の連続したシーケンスがnであることを確認します。

その後、我々はあらゆる点でそれを起動する必要がありますか?

我々はそれを開始するために開始し、N、N-単純に奇数と偶数に分けています。その後、我々は、n奇数で始まり、さらにはそれを起動します。

nが奇数の時間である場合1.nは奇数です。

連続的な正と等しい和奇数の場合。この場合、文字があります。和/ N、これらのデータ列の平均に等しいです。なぜ?(A1 +)/ 2 *ので、 (A1 +)/ 2 =和/ N; N =和(A1 +)/ 2は、中間の最小の数ということです。学び、高校の数学が学んだことがない場合でも、このことについて理解しておく必要があり、それは問題ではありません。(+ A1)/ 2;または整数または小数、小数部分は0.5であり、0.5の小数点小数部は奇数で乗算されます。まだ小数部は小数点で0.5であり得る、等しい合計ではない。奇数の場合、N和からA1へ連続等しいn個の場合したがって、、、(A1 +)/ 2が整数でなければなりません中間数。換言すれば、nが奇数とA1、A2 ....和の和、和/ Nである中間体の数と等しい場合。さらに、和%N == 0(言うことができ、中間に等しい数の分割です)。そこで意志:N == 2%、1%、N == 0 &&和。ように、n奇数、連続正和に必要な条件の奇数です。

2.nでも。nが偶数である場合

我々は見て和を取る/ nは、この数の数で、質問は明白です:ときnは偶数、(A1 +)/ 2は、配列の2つの中間の数の平均値に等しいです。その後、当然小数部分は0.5です。例えば、配列:1,2,3,4;(1 + 4)/ 2 =(2 + 3)/ 2 = 2.5。すなわち:(A1 +)/ 2 =和/ N = X( xは0.5の小数部分であり、Xは二つの中間シーケンスの平均数です)。和/ N、小数部分は、あまりにも多くの和の0.5%分数であるNそれに等しいですか?(+ =和/ N:我々は、合計する/ Nとして表される (0.5)の整数部分を表します)。和= N * + N / 2; たとえば和%N = N / 2であり、換言すれば、我々はできるN%2 == 0 &&和% N = N / 2 としてN偶数、連続の偶数であります正の合計のために必要な条件と

いくつかの単語の男は、コードに言いました:

1  クラスソリューション{
 2  公共3      ベクトル<ベクトル< INT >> FindContinuousSequence(INT SUM){
 4          // アイデア:一般的な用語で数学的に一定のルールを識別する
。5          ベクトル<ベクトル< INT >> RES;
 6。         ためINT N- =(INT)SQRT(2 * SUM); N-> = 2 ; N-- 。7          { // 条件が成立し、N- 
8              IF(N-%2 == 1 && N-SUM%== 0 ||( %N-SUM)* 2N - ==)// N-奇数条件を満たす
9。             {
 10                  ベクトル< INT > son_res;
 11                  INT I = SUM / N-(N- 1)/ 2、J = 0 ; J <N-; I ++、J ++ 12は                     son_res.push_back(I)
 13は                 、res.push_back(son_res)
 14              }
 15          }
 16          リターン  RES;
 17      }
 18です }。

目に見える、コードは非常に簡単です!

アイデアを要約したものです。

最初のステップは:、列数の特徴から開始アイテムの数nを絞り込みます

手順:考慮されるとき、別々の奇数及び偶数n個に分割

第三段階:同等のシーケンスの和を確実にするために、奇数と偶数の条件の範囲の条件でN Nの下で別々に考慮特性は何ですか

おすすめ

転載: www.cnblogs.com/shaonianpi/p/12500991.html