2017-04-06 21 views
0

モジュラス関数を使用せずに繰り返し数字(例:11,101,15231:すべて1を繰り返します)を持つ数字の数を見つける方法。範囲はユーザー定義であると想定されます。組み合わせを使用するいくつかの解決策があるが、それは所定の範囲に主観的である。範囲が52と156として与えられている場合、最良の方法で解を見つける方法。与えられた範囲内の繰り返し数字を持つカウント数

+0

整数の場合、x%yはx-x/y * yと同じです。 – maraca

答えて

0

あなたには数字の集合Sがあるとします。

Aを次元の行列とすると、|| S ||

void check(matrix A){ 
    for(int i = 0; i < A.columns; i++){ 
     boolean all_equal = true 
     for(int j = 0; j < A.rows; j++){ 
      if(A[i][j] != 1) all_equal = false 
     } 
     if(all_equal) print("all numbers have " + i + " digit in common") 
    } 
} 

希望:あなたはあなただけのすべての数字はいくつかの一般的な数字を持っているかどうかを確認する必要があるよりも、すべての数字に存在するすべての桁を取得することができ、この擬似コードとX 10

int row = 0 
for each n in S: 
    let exp = log10(n) 
    for(int i = exp; i >= 0; i--){ 
     let division = n/pow(10, exp) 
     A[row][ division ] = 1 
     n -= division * pow(10, exp) 
    } 
    row++ 
} 

それは私があなたが文字列に番号を回すの可能性を検討していると思います


:)ができますので、この解決策は、文字列

が含まれていません。
0

数字の繰り返し数を調べるのではなく、それぞれの位置に一意の数字を持つ数字の数を数え、実際の結果を得るためにすべての数字から引きます。

# of numbers with repeating digits(R) = all possible numbers(A) - # of numbers with unique digits in each position(X) 

次に、一定範囲[L、R]内XAをカウントするため、我々はR0から最初のカウントとL - 10を引くことができます。

ans[L, R] = ans[0, R] - ans[0, L - 1] 

ここでコード例を示しません。あなたの思考のためにいくつかの食べ物を置くだけで、より多くの説明が必要な場所を教えてください。

関連する問題