ファレイシーケンスPOJ - 2478(オイラー関数とプレフィックス)

ファレイシーケンス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の要素を計算することです番号。
入力
入力サンプルの複数のセットのサンプルはそれぞれ一つだけの行、正の整数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 
}

 

 

 

おすすめ

転載: www.cnblogs.com/Vampire6/p/11329981.html