私はコーディングの問題に取り組んでいましたが、そのサブパートとして次の問題が発生しました。
数xが与えられ、それを2乗して、数がx^2になるようにします。これで、1からx ^2までの数値が得られます。例:if number = 4; 次に4^2 = 16
1 ----->1
2 3 ----->2
4 5 6 ----->3
7 8 9 10 ----->4
11 12 13 ----->5
14 15 ----->6
16 ----->7
今、私はkと言う番号を与えられており、それがどのグループに属しているかを伝える必要があります。ここで8は4番目のグループに属しています。
私が思ったのは、1から始めて、カウントを1に初期化し、1<8かどうかを確認することです。はいの場合、2を1(前の合計)に追加し、カウントを2に増やして、3 <8かどうかを確認しますか?はいの場合は3から3(前の合計)を追加し、カウントを3に増やして6 <8かどうかを確認します。はいの場合は4から6を追加し、カウントを4に増やして10 <9かどうかを確認しますか?いいえの場合は終了します。したがって、グループ番号。カウントすなわち4です。
しかし、私のアプローチよりも速い方法はありますか?
編集1: 私のアルゴリズムで、カウントが前の例では4である指定された数に達したときに、5ではなく3を追加する必要があることを言及するのを忘れました。例:
検索する番号が14の場合、
1<14 yes then add 2
3<14 yes then add 3
6<14 yes then add 4
10<14 yes then add **3** ---->here I need to add 3 instead of 5
13<14 yes then add **2** ---->here I need to add 2 instead of 6
15<14 No so output count.
if条件を使用して5の代わりに3を追加することは可能ですが、追加する値がxの値に応じて自動的に増加してから減少する方法はありますか(xが何を指すかについては上記の例を参照してください)