teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

d

2019/08/13 03:27

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -2,14 +2,16 @@
2
2
 
3
3
  [数をだいたい等しく分配するアルゴリズム](https://teratail.com/questions/199770)
4
4
 
5
- i = 1, 2, ..., n - 1
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
- PHP で書いた場合
27
+ ### PHP
26
28
 
27
29
  ```php
28
30
  $x = 100;

2

d

2019/08/13 03:27

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -28,8 +28,9 @@
28
28
  $x = 100;
29
29
  $n = 7;
30
30
  $ret = [];
31
- // Your code here!
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

2019/08/13 03:25

投稿

tiitoi
tiitoi

スコア21960

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
  ```