fork download
  1. import java.util.Arrays;
  2.  
  3. /*
  4. プログラミングのお題スレ Part15
  5. //mevius.5ch.net/test/read.cgi/tech/1564310397/744
  6. 744 名前:デフォルトの名無しさん[sage] 投稿日:2019/10/11(金) 21:55:54.61 ID:zKaC3xv0
  7. お題:0~9999の整数について数字和を求め、数字和の頻度を集計せよ
  8.  
  9. ocaml
  10. //ideone.com/AjcGgp
  11.  
  12. c
  13. //ideone.com/38nYGS
  14.  
  15. octave
  16. //ideone.com/g7FrVu
  17.  
  18. ruby
  19. //ideone.com/YyFXWh
  20. */
  21. class Ideone
  22. {
  23. public static void main(String[] args)
  24. {
  25. hoge(10, 4);
  26. }
  27.  
  28. static void hoge(int x, int y)
  29. {
  30. long[] n = calc(x, y);
  31. for(int i = 0; i < n.length; i++)
  32. System.out.printf("%d\t%d%n", i, n[i]);
  33. }
  34.  
  35. static long[] calc(int x, int y)
  36. {
  37. long[] ary = new long[x];
  38. Arrays.fill(ary, 1);
  39.  
  40. while (--y > 0)
  41. {
  42. long[] next = new long[ary.length + x - 1];
  43. long num = 0;
  44. for (int i = 0; i < next.length; i++)
  45. {
  46. long add = i < ary.length ? ary[i] : 0;
  47. long sub = i - x >= 0 ? ary[i - x] : 0;
  48. num += add - sub;
  49. next[i] = num;
  50. }
  51. ary = next;
  52. }
  53. return ary;
  54. }
  55. }
Success #stdin #stdout 0.08s 34084KB
stdin
Standard input is empty
stdout
0	1
1	4
2	10
3	20
4	35
5	56
6	84
7	120
8	165
9	220
10	282
11	348
12	415
13	480
14	540
15	592
16	633
17	660
18	670
19	660
20	633
21	592
22	540
23	480
24	415
25	348
26	282
27	220
28	165
29	120
30	84
31	56
32	35
33	20
34	10
35	4
36	1