#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 #defineは長い長いっ の#define MAXN 1000005 BOOL VIS [MAXN]。 int型のmは、[MAXN]素数。 無効{INIT()の ための(int型、I = 2 ; iがMAXNを<Iは++ ){ 場合(!VIS [i])と プライミング[ ++ M] = iは、 用(INT J = 1 ; J <= Mであり、j ++ ){ 場合(素数[J] * I> = MAXN)ブレーク。 VIS [素数[J] * I] = 1 ; もし(I%素数[J] == 0)ブレーク。 } } } / * 基本算数定理* / LL計算値(LL n)で{ LL RES = 1 。 以下のために(int型 I = 1 ; I <= M &&素数[I] *素数[I] <= N; iは++ ) 場合(N%素数[I] == 0 ){ LLのCNT = 1 。 一方、(N%素数[I] == 0 ) ++ CNT、N / A = 素数[I]。 RES * = CNT; } もし(N> 1)のRES =のRES * 2 。 リターンのres; } int型のmain(){ INIT()。 int型の T; cinを>> トン。 用(INT TT = 1 ; TT <= T; TT ++ ){ LL N。 scanf関数(" %のLLD "、&N) printf(" ケース%D:%LLDする\ n "、TT、CALC(N) - 1 )。 } }