2018南京ネットワーク予選合計 - リニアふるいです

問題の意味

リンク

定義の$ f(x)が$順序付けタプル$ $以下の条件(a、b)は数(すなわち、$(a、b)はプログラムの$ $(Bと共に、A)$異なるシナリオが考えられている満たします):

  • $ X = ABの$
  • (1よりすなわち、完全な方形要因他のではない)の$ $ $ Bが$無平方因子

\回10 ^ 7 $求$ \ displaystyle \ sum_ {i = 1} ^ NF(I)、1 \当量のn \の当量2。

分析

明らかに、$をf(n)は$リニアふるいを検討し、乗法関数です。

  1. の$ X $は素数は、$ F(X)= 2 $、すなわち$(1、x)は$と$(X、1)$である場合、
  2. 場合の$ X $最低品質の$ P $の因子、および$ P \ NMID \ FRAC {X} {P} $時間は、$ F(X)= F(P)は、f(\ FRAC {X} {P}) = 2F(\ FRAC {X} {P})$。
  3. 場合の$ Xの$ pが$の最小素因数の$、および$ P \中間\ FRAC {X} {P} $
    • $ P \中間の\ FRAC {X} {P ^ 2} $場合、$ X $ $ P $少なくとも3のインデックスの、すなわち関係なく$(B)$を分割する方法の2つの数が存在しなければなりません$ pは法的ソリューションの2より大きい、即ち、不在の指標に等しい数を$
    • そうでない場合、$ X $ $ P $ 2それぞれのインデックス、これら2つの点$ P $ $ $ A $へとB $、残り$ \ FRACに{X} {P ^ 2} $が子供であります問題、すなわち、$のF(x)は= F(\ FRAC {X} {P ^ 2})= F(\ FRAC {X} {P})ここで、f(\ FRAC {1} {P})= F(\ FRAC {X} {P})/ 2 $

 

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、

const  int型 MAXN = 2E7 + 10 int型のn;
int型VIS [MAXN]、[MAXN]、primeCntは素数。
INT F [MAXN]は、[MAXN]です。       // F(I)的前缀和

ボイドseive()
{ 
    F [ 1 ] = 1 以下のためにint型 I = 2 ; I <= MAXN; iは++ 
    { 
        場合(!VIS [I])
        { 
            素数[ ++ primeCnt] = I。
            F [I] = 2; 
        } 
        のためにint型の J = 1 ; J <= primeCnt &&(長い 長い)私は*は素数[J] <= MAXNあり、j ++ 
        { 
            VIS [iが *素数[J] = もし(I%素数[j] == 0 
            { 
                F [iが素数を* [J] =(I /素数[J]%の素数[j] == 0)?0:[I / F 素数[J]。
                破ります; 
            } 
               F = Fの[I] * [iが素数[J] *] 2 
        } 
    } 
}

INT メイン()
{ 
   seive()。
   以下のためにINTは I = 1 ; I <= MAXN; iは++)S [I] = sの[I- 1 ] + F [i]は、

   int型T; 
   scanf関数(" %のD "、&T)。
   一方、(T-- 
   { 
       scanf関数(" %のD "、&N)
       printf(" %d個の\ n " 、S [N])。
   } 
}

 

 

参考リンク:https://oi.men.ci/jsk-30999/#%D0%B4%D0%B0%D0%BB%D0%B5%D0%B5

おすすめ

転載: www.cnblogs.com/lfri/p/11262808.html