部門UVa725

そのイタリア:入力N(2 <= N <= 79)

存在ABCDE / FGHIJ = nの表現かどうかを調べるには

直接の列挙は、各FGHIJ、ABCDE判定のために、すべての数字は(各数字が表示されます)を等しくないかもしれませんが、注意を払うが、範囲、などのフォーマットを列挙するために、フォーマットは本当に頭痛の種です。

コードは以下の通りです

#include <ビット/ STDC ++ H>
 に#define INF 0x3f3f3f3f
 の#define INF 0x7fffffffffffffff 

のtypedef 長い LL。
constの ダブル PI = 3.1415926535897931 CONST  長い 長い MOD = 1E9 + 7 const  int型 MA = 1E7 + 10 const  int型 MA = 2 * 1E5 + 10 const  int型 = 1E3 +数10 const  int型 MAXN = 1E8 + 10 使用して 名前空間はstdを、
///////////////////////////////////////////// / 

INTチェック(int型int型B)
{ 
    int型 VIS [ 10 ]; 
    のmemset(VIS、0はsizeof(VIS)); // 各数字が表示された記録
    のiF(> 98765 戻り 0 ; // ABCDEは、この数よりも大きくはありません
    文字列STR1、STR2、
    STR1 = to_stringに(A); 
    STR2 = to_stringに(B)
     のためのINT I = 0 ; I <str1.size(); I ++  
    {
        VIS [0009 [I] - 48 ] = 1 ; 
    } 
    のためのINT I = 0 ; I <str2.size(); I ++ 
    { 
        VIS [STR2 [I] - 48 ] = 1 ; 
    } 
    IF(B < 10000 
        VIS [ 0 ] = 1 ; // 4桁、手動プレ連結0 
    のint SUM = 0 ;
     のためのINT I = 0 ; I < 10 ; I ++ 
        SUM + = VIS [I]。
    リターン SUM == 10 ; // すべての数字が表示される場合は、チェックは、すなわち、すべてのFGHIJのABCDEと番号が同じではありません。
}
 のInt メイン()
{ 
    int型 CNT = 0 、N-;
     一方(CIN >> N - && N-)
    { 
        IF(CNT ++ 
            COUT << ENDL;
         INTフラグ=で0 ;
         のためのINT I = 1234 ; I < 99999 ; I ++ 
        { 
            IF(N-チェック(* I、I))
            { 
                のprintf("%05D /%05D =%D \ N- "私は* I)はN-、N-; 
                のフラグ = 1 ; 
            } 
        } 
        IF(!内のフラグ)
        { 
            のprintf(" NOソリューション%D \ N-ために存在する。、N-)は; // 出力形式を退屈、ああああああああああああああ
        } 
    } 
    戻り 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/Aracne/p/12387353.html