数(約桜の階乗

問題の意味

整数Nが与えられると、xの数、Yを満たす1 / X + 1 / Y = 1 / Nを見つけます!

N∈[1,1e6]

説明

 

 

1の#include <ビット/ STDC ++ H>
 2  の#define長い長llの
 3  使用して 名前空間STDを、
4  CONST  INT N = 1E6 + 10、MOD = 1E9 + 7 5  INT N。
6  INT P [N]、CNT。
7  BOOL ST [N]。
8  ボイド get_primes(int型N){
 9      INTは iは= 2、I <= N; I ++ ){
 10          であれば(ST [I]!)P [CNT ++] = I。
11          のためのint型 J =0 ; P [j] * I <= nであり、j ++ ){
 12              ST [P [j] * I] = 1 13              もし(I%のP [j] == 0ブレーク14          }
 15      }
 16  }
 17  INT メイン(){
 18      CIN >> N。
19      get_primes(N)
20      INT ANS = 1 21      のためにINT iが= 0 ; I <CNT; I ++ ){
 22          int型の和= 0 23          int型の素数=P [i]は、
24          のためにINT J = N; J; J / = 素数){
 25              和+ = J / 素数。
26          }
 27          ANS =(LL)(2 *和+ 1)%のMOD * ANS%MOD。
28      }
 29      COUT << ANS << ENDL。
30      リターン 0 ;
31 }

 

おすすめ

転載: www.cnblogs.com/hhyx/p/12629185.html