彗星OJ - コンテスト#8魔法の機能

 

 

質問の意味:

 

 アイデア:

       (x)の素因数分解であるfはまず、(TI / 2)^ xをΠpi後、取得したプレイテーブルを観察します 

    再分析可能、のΣf(I)= N /(1 * 1)* 1 * 1のみのみの+ N /(2 * 2)* 2 * 2 +数の数の... 

       しかし、結果のタイムアウト。

            分析を実行すること数xがPHI(X)でのみ利用可能です。

#include <ビット/ STDC ++ H>
 の#define(iは= int型、iが= Bを<; I ++の)のための担当者(I、B)
 の#define DEP(I、B)(iはBを= int型のため、 I> =; i--)
 使用して 名前空間はstdを、
#defineっ長い長
 のconst  int型 N = 3E5 + 5 
LL RD()
{ 
    LL、X = 0、F = 1チャー CH = GETCHAR()。
    一方、(CH < ' 0 ' || CH> ' 9 '){ 場合(CH == ' - ')、F = - 1 ; CH = GETCHAR();}
    一方、(CH> = ' 0 ' && CH <= ' 9 ' {X = X *)10 + CH- ' 0 ' ; CH = GETCHAR();}
     戻りのx *のF。
} 
int型のT。
LLのn; 
LL F [ 10000010 ]、ANS、合計。
INT メイン()
{ 
    T = RD()。
    一方、(T-- 
    { 
        ANS = 0 ;和= 0 
        N = RD()。
        INT P = SQRT(N)。
        DEP(I、2 、P)
        { 
            int型のx = I + iは、
            F [I] = N /(1LL * i *がi)を、
            一方 (x <= p)は
            {     
                F [I] - = F [X]。
                X + = I。
            } 
            ANS = ANS + 1LL * F [I] * I。 + = F [i]は、
        } 
        のprintf(" %LLDする\ n "、ANS + N- 合計)。
    } 
}
コードの表示

 

#include <ビット/ STDC ++ H>
 の#define(iは= int型、iが= Bを<; I ++の)のための担当者(I、B)
 の#define DEP(I、B)(iはBを= int型のため、 I> =; i--)
 使用して 名前空間はstdを、
#defineっ長い長
 のconst  int型 N = 1E7 + 5 
LL RD()
{ 
    LL、X = 0、F = 1チャー CH = GETCHAR()。
    一方、(CH < ' 0 ' || CH> ' 9 '){ 場合(CH == ' - ')、F = - 1 ; CH = GETCHAR();}
    一方、(CH> = ' 0 ' && CH <= ' 9 ' {X = X *)10 + CH- ' 0 ' ; CH = GETCHAR();}
     戻りのx *のF。
} 
INTプライム[N + 10 ]、PHI [N + 10 ]、NUM [N + 10 ]、フラグ[N + 10 ]、L = 0 ボイドisprime()
{ 
    PHIは、[ 1 ] = 1 以下のためにint型、I = 2 ; iが<= N; iが++ 
    { 
        場合(!フラグ[I])
        { 
            プライム[ ++ 1] = I。
            PHI [i]は = I- 1 
        } 
        のためのINT J = 1 ; J <= 1; J ++ 
        { 
            場合(1LL *プライム[J] * I> N)が壊れます
            PHI [iが素数* [J] = PHI [i]は*(I%プライム[j]は素数[J] - ?1 :プライム[J])。
            フラグ[プライム[J] * I] = 1 もし(I%、プライム[J] == 0ブレーク
        } 
    } 
} 
int型Tと、
LLのn;
LL F [ 10000010 ]、ANS、合計。
INT メイン()
{ 
    isprime()。
    T = RD()。
    一方、(T-- 
    { 
        ANS = 0 ;和= 0 
        N = RD()。
        INT P = SQRT(N)。
        DEP(I、1 、P)
        { 
            int型のx = I + I。
            F [I] = N /(1LL * i *がi)を、
            ANS = ANS + 1LL * [I] * F [i]がPHI。
        } 
        のprintf(" %LLDする\ n "、年); 
    } 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/The-Pines-of-Star/p/11334828.html