2011-03-05 42 views
0

私は次のように寒いです。番号に番号を付ける?

私には番号があり、番号317を付けたいと言います。結果の整数は10317になります。どのようにこれを行うことができます。また、いったんこの番号を取得すると、17を最後から削除する方法があります。文字列を使用せずに、明らかな解決と追加なしで。

おかげで最初のもののために

+2

をあなたが解決し、追加することによって何を意味するのですか? – Argote

+6

誰かがこの質問のポイントを説明できますか?後者はかなりローカライズされた/話題外のものであるため、些細なことのために宿題や三角形の匂いがする。これをしたいと思っている背後にある実践的な理由は何ですか? – Joe

+0

@Argote @Argote 10を1つ追加すると、109を追加する必要があることが分かりました。 – jmasterx

答えて

8

これは、これは取り除くう

int append_a_and_b_as_int(int a, int b) 
{ 
    for(int tmp = b; tmp > 0; tmp % 10) 
    { 
     a *= 10; 
    } 
    return a + b; 
} 

両方の数値付加されます最後のn個の数字

int remove_n_numbers_from_a(int n, int a) 
{ 
    for(int i = 0; i < n; i++) 
    { 
     a /= 10; 
    } 
    return a; 
} 
1

:秒

int a = 10; 
int b = 317; 
int result = a * 1000 + b; 

int result2 = result/100; 
+2

彼は「明らかな解決と追加なしに」と言った。 – koan

+0

私は、乗算が解決と呼ばれていたことを認識しませんでした。 : –

1

これが職場で行う必要がある場合は、終了することをおすすめします。

2つの数値を数値データとして扱い、問題を解決するか、またはそれらを文字列として扱い、追加を使用することができます。

6

追記:

int foo(int a, int b) 
{ 
    return a*pow(10, floor(log10(b))+1)+b; 
} 

削除:

int bar(int a, int b) 
{ 
    return a/pow(10, floor(log10(b))+1); 
} 
+0

あなたはそれらの結果を 'int'にキャストする必要があると思います。 – Argote

+0

thats wrong、ceil(log10(b))をfloor(log10(b))+ 1に置き換える必要があります。 – zkunov

+0

@zvezdiああ、そうだよ。それは私が最初に書いたものですが、私は 'floor(X)+ 1 == ceil(X)'と考えました。 Xが既に整数の場合はそうではないことが分かります。私のコードでは、 'b'が10の正確な威力だった場合、バグがありました;) – fouronnes

関連する問題