CF1203B等しい四角形

問題の意味:n個の除数番号を見つけます

アプローチ:XはN数の最大公約数であることを考えると、X Tは、素数に分解することができる216 = 3×2 ^ 3 ^ 3、数約4×4 216のいくつか

書式#include <stdio.hに> 
する#include < 文字列の.h> 
の#include <リスト> 
の#include <アルゴリズム>
 使用して 名前空間はstdを、
typedefの長い 長いLL。
typedefをダブルデシベル。
const  int型 maxsz = 10001 ;
const  int型 MAXN = 4E5 + 1 ;
// int型CNT [maxsz]。
LL [MAXN]。
BOOL isprime(LLのNUM){
     場合(NUMの== 1を返す (LL I = 2; 私は、私を* <= NUM; 私は++ 場合(NUM%は私が== 0を返す 返す ; 
} 
int型のmain(){
     int型のT。
    LLのn; 
    scanf関数(" %のD "、&T)。
    int型 I = 1のscanf(; I <= T I ++)は、 " %のLLD "、A + I)。
    N = [ 1 ]。
    以下のためにint型 I = 2 ; I <= T; iは++)N = __gcd(N、[I])。
    
    LL ANS = 1 以下のために(LL I = 2 ; iは、* I <= N; iは++ ){ 
        LLのCNT = 1 
        
        もし(isprime(I)){
             一方(N%I == 0 ){ 
                N / = I。
                CNT ++ ; 
            } 
        } 
        
        ANS = ANS * CNT。
    } 
    もし、(N - 1)* ANS = 2 
    printf(" %LLDする\ n " 、ANS)。
    
    リターン 0; 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/Urchin-C/p/11369132.html