回答編集履歴
3
d
answer
CHANGED
@@ -2,14 +2,16 @@
|
|
2
2
|
|
3
3
|
[数をだいたい等しく分配するアルゴリズム](https://teratail.com/questions/199770)
|
4
4
|
|
5
|
-
i =
|
5
|
+
分割後の各 v_i, (i = 0, 1, ..., n - 1) を
|
6
|
-
にたいして、各 v_i を
|
7
6
|
|
8
|
-
v_i = (i + 1) * x // n - i * x // n
|
7
|
+
`v_i = (i + 1) * x // n - i * x // n`
|
9
8
|
|
10
9
|
で求めます。// は切り捨て除算 (例: 5//2=2) です。
|
11
10
|
|
11
|
+
## サンプルコード
|
12
12
|
|
13
|
+
### Python
|
14
|
+
|
13
15
|
```python
|
14
16
|
x = 100
|
15
17
|
n = 7
|
@@ -22,7 +24,7 @@
|
|
22
24
|
print(chunks, sum(chunks)) # [14, 14, 14, 15, 14, 14, 15] 100
|
23
25
|
```
|
24
26
|
|
25
|
-
|
27
|
+
### PHP
|
26
28
|
|
27
29
|
```php
|
28
30
|
$x = 100;
|
2
d
answer
CHANGED
@@ -28,8 +28,9 @@
|
|
28
28
|
$x = 100;
|
29
29
|
$n = 7;
|
30
30
|
$ret = [];
|
31
|
-
|
31
|
+
|
32
32
|
for ($i = 0; $i < $n; $i++) {
|
33
|
+
|
33
34
|
$v = intdiv(($i + 1) * $x, $n) - intdiv($i * $x, $n);
|
34
35
|
array_push($ret, $v);
|
35
36
|
}
|
1
d
answer
CHANGED
@@ -20,4 +20,31 @@
|
|
20
20
|
chunks.append(v)
|
21
21
|
|
22
22
|
print(chunks, sum(chunks)) # [14, 14, 14, 15, 14, 14, 15] 100
|
23
|
+
```
|
24
|
+
|
25
|
+
PHP で書いた場合
|
26
|
+
|
27
|
+
```php
|
28
|
+
$x = 100;
|
29
|
+
$n = 7;
|
30
|
+
$ret = [];
|
31
|
+
// Your code here!
|
32
|
+
for ($i = 0; $i < $n; $i++) {
|
33
|
+
$v = intdiv(($i + 1) * $x, $n) - intdiv($i * $x, $n);
|
34
|
+
array_push($ret, $v);
|
35
|
+
}
|
36
|
+
|
37
|
+
var_export($ret);
|
38
|
+
```
|
39
|
+
|
40
|
+
```
|
41
|
+
array (
|
42
|
+
0 => 14,
|
43
|
+
1 => 14,
|
44
|
+
2 => 14,
|
45
|
+
3 => 15,
|
46
|
+
4 => 14,
|
47
|
+
5 => 14,
|
48
|
+
6 => 15,
|
49
|
+
)
|
23
50
|
```
|