1

整数 n があり、その整数を 2 つの整数に分割する必要があります。その 2 つの整数の合計は n に等しくなるはずです。

たとえば、n=12 の場合、4,8 にする必要があります。0+4=4、4+4=8、8+4=12 のはずです。すなわち。数字の間隔は均等にする必要があります。これは非常に重要です。N は、等間隔の数値に分割するように変換する必要があります。次のコードを試してみましたが、間違った答えが返されることがあります。

int a = n/3;
int b = (n/3) * 2;
if(a+b==n)
{

}
else
{
    n=n+(n-(a+b));
    System.out.println("new n "+n);
    a = n/3;
    b = (n/3) * 2;      
}
4

3 に答える 3

1

n が 3 の倍数でない場合はどうなるでしょうか。

次の 3 の倍数に増加

これにより、2 つのオプションが提供されます

int a = (n+2) / 3; // round a up
int b = a * 2; // b is double a but a + b != n

また

int b = n - a; // sum is right and when a is a multiple of 3, b = 2 * a

2番目のオプションでは

n = 6, a = 2, b = 4
n = 7, a = 3, b = 4
n = 8, a = 3, b = 5,
n = 9, a = 3, b = 6
n =10, a = 4, b = 6
n =11, a = 4, b = 7
n =12, a = 4, b = 8
于 2013-11-13T13:14:28.457 に答える
0
if (n % 3 != 0) {
    n = ((n / 3) + 1) * 3;
}

int a = n / 3;
int b = a * 2;
于 2013-11-13T13:14:04.113 に答える
0

次のコードはn、3 つの等間隔に分割します。が 3 の倍数でない場合nは、次に大きい 3 の倍数に増やします。

int a = n / 3;
if (a * 3 < n) {
    a++;
    n = a * 3;
}
int b = a * 2;

あなたの間隔は: 0 - a, a - b,b - n

于 2013-11-13T13:14:28.753 に答える