整数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 }