ファレイシーケンスPOJ - 2478
トピックへのリンク:https://vjudge.net/problem/POJ-2478
トピック:
法的配列Fnが、任意の整数nを意味する(N> = 2)、既約分数のA / B(0 <a < <= N B)、GCD(A、B)= 1 最良の昇順いくつかの以下の出発
のF2 {1/2} =
F3 = {1/3、1/2、2/3}
F4 = {1/4、1/3、1/2、2/3、3/4}
F5 = {1/5、1/4、1/3 、2/5、1/2、3/5、2/3、3/4、4/5}
タスクが合法シーケンスのFnの要素を計算することです番号。
入力
のF2 {1/2} =
F3 = {1/3、1/2、2/3}
F4 = {1/4、1/3、1/2、2/3、3/4}
F5 = {1/5、1/4、1/3 、2/5、1/2、3/5、2/3、3/4、4/5}
タスクが合法シーケンスのFnの要素を計算することです番号。
入力サンプルの複数のセットのサンプルはそれぞれ一つだけの行、正の整数N -がある。(2 <= N - <= 10
。6
)。サンプルの間に空白行が存在しなかった0入力端を表します。
出力
それぞれのケースでは、出力にシーケンスのFnに含まれる法的な要素の数を必要とします
サンプル入力
2 3 4 5 0サンプル出力
1 3。 5。 9つの。
アイデア:
1 =
3 = 1 + 2
5 = 1 + 2 + 2
9 = 1 + 2 + 2 + 4
...
12244 ...オイラー値ので、それは非常に容易ですプレフィックスとオイラーの値だと思う、オイラー値の最初のステップは、テーブルを再生するために出てくるので、その後、私が求めているため、ループを通過し始め
、残業をして、そしてそれがあるので、彼らはまだ、プレフィックスと、ここで、テーブルに格納したいです最初から添字2、およびそれが添字プレフィックスから求めている3を開始
// // 2019年8月9日に羽生によって作成されます。 // する#include <アルゴリズム> 書式#include <iostreamの> の#include <cstdioを> する#include <CStringの> の#include <キュー> の#include < 設定 > 書式#include <math.h>の 書式#include <マップ> 使用して 名前空間はstd; typedefの長い 長いLL。 const int型 MAXN = 2E6 + 7 。 LLのオイラー[MAXN]。 ボイド値() { memsetの(オイラー、0、はsizeof (オイラー))。 オイラー[1 ] = 1 。 用(int型 iは= 2 ; I <= MAXN iが++ ) { 場合(!オイラー[I]) { ための(int型 J = I; J <= MAXN; J + = I) { 場合(!オイラー[J]) オイラー[J] = J。 オイラー[J] =オイラー[J] / Iは、(I-* 1 )。 } } } のための(int型 I = 3 ; I <= MAXN; iが++ ) オイラー[I]+ =オイラー[I- 1 ]。 } int型のmain() { int型N; 値(); 一方、(〜のscanf(" %d個"、&N)&& N) { のprintf(" %LLDする\ n " 、オイラー[N])。 } 戻り 0 。 }