|
|
@@ -0,0 +1,128 @@
|
|
|
+// Traduction des OpCodes en version lisible
|
|
|
+/////////////////////////////////////////////////////////////////////////
|
|
|
+
|
|
|
+// #ip 3 | IP is reg 3
|
|
|
+
|
|
|
+// #0 addi 3 16 3 | IP + 16
|
|
|
+// #1 seti 1 0 4 | r4 = 1
|
|
|
+// #2 seti 1 7 2 | r2 = 1
|
|
|
+// #3 mulr 4 2 1 | r1 = r2 * r4
|
|
|
+// #4 eqrr 1 5 1 | r1 = r1 == r5
|
|
|
+// #5 addr 1 3 3 | IP + r1
|
|
|
+// #6 addi 3 1 3 | IP + 1
|
|
|
+// #7 addr 4 0 0 | r0 = r4 + r0
|
|
|
+// #8 addi 2 1 2 | r2 = r2 + 1
|
|
|
+// #9 gtrr 2 5 1 | r1 = r2 > r5
|
|
|
+// #10 addr 3 1 3 | IP + r1
|
|
|
+// #11 seti 2 6 3 | IP = 2
|
|
|
+// #12 addi 4 1 4 | r4 = r4 + 1
|
|
|
+
|
|
|
+// #13 gtrr 4 5 1 | r1 = r4 > r5
|
|
|
+// #14 addr 1 3 3 | IP + r1
|
|
|
+// #15 seti 1 3 3 | IP = 1
|
|
|
+// #16 mulr 3 3 3 | IP * IP -> 16 * 16 = 256 == OUT OF BOUNDS !
|
|
|
+
|
|
|
+// #17 addi 5 2 5 | r5 = r5 + 2
|
|
|
+// #18 mulr 5 5 5 | r5 = r5 * r5
|
|
|
+// #19 mulr 3 5 5 | r5 = IP * r5
|
|
|
+// #20 muli 5 11 5 | r5 = r5 * 11
|
|
|
+// #21 addi 1 6 1 | r1 = r1 + 6
|
|
|
+// #22 mulr 1 3 1 | r1 = r1 * IP
|
|
|
+// #23 addi 1 13 1 | r1 = r1 + 13 -> 145
|
|
|
+// #24 addr 5 1 5 | r5 = r5 + r1 -> 981
|
|
|
+
|
|
|
+// #25 addr 3 0 3 | IP + r0 -> r0 est 1 au 1er passage, 0 ensuite
|
|
|
+// #26 seti 0 6 3 | IP = 0
|
|
|
+
|
|
|
+// #27 setr 3 1 1 | r1 = 27
|
|
|
+// #28 mulr 1 3 1 | r1 = r1 * 28
|
|
|
+// #29 addr 3 1 1 | r1 = 29 + r1
|
|
|
+// #30 mulr 3 1 1 | r1 = 30 * r1
|
|
|
+// #31 muli 1 14 1 | r1 = r1 * 14
|
|
|
+// #32 mulr 1 3 1 | r1 = r1 * 32 -> 10550400
|
|
|
+// #33 addr 5 1 5 | r5 = r5 + r1 -> 10551381
|
|
|
+
|
|
|
+// #34 seti 0 0 0 | r0 = 0
|
|
|
+// #35 seti 0 3 3 | IP = 0
|
|
|
+
|
|
|
+
|
|
|
+// Traduction en caude haut-niveau
|
|
|
+/////////////////////////////////////////////////////////////////////////
|
|
|
+/*
|
|
|
+
|
|
|
+double r0 = 0;
|
|
|
+double r1 = 329700;
|
|
|
+double r2 = 0;
|
|
|
+//double r3 = IP;
|
|
|
+double r4 = 0;
|
|
|
+double r5 = 330681;
|
|
|
+
|
|
|
+r4 = 1;
|
|
|
+
|
|
|
+do
|
|
|
+{
|
|
|
+
|
|
|
+r2 = 1;
|
|
|
+
|
|
|
+ do
|
|
|
+ {
|
|
|
+
|
|
|
+ if (r2 * r4 == r5)
|
|
|
+ {
|
|
|
+ r0 += r4;
|
|
|
+ }
|
|
|
+
|
|
|
+ r2++;
|
|
|
+
|
|
|
+ } while (r2 <= r5);
|
|
|
+
|
|
|
+ r4++;
|
|
|
+
|
|
|
+} while (r4 <= r5);
|
|
|
+
|
|
|
+return r0;
|
|
|
+
|
|
|
+*/
|
|
|
+
|
|
|
+// Transformation du code pour la compréhension
|
|
|
+/////////////////////////////////////////////////////////////////////////
|
|
|
+/*
|
|
|
+
|
|
|
+double r0 = 0;
|
|
|
+double r5 = 10551381;
|
|
|
+
|
|
|
+for (var r4 = 1; r4 <= r5 ; r4++)
|
|
|
+{
|
|
|
+ for (var r2 = 1 ; r2 <= r5 ; r2++)
|
|
|
+ {
|
|
|
+ if (r2 * r4 == r5) r0 += r4;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+return r0;
|
|
|
+
|
|
|
+*/
|
|
|
+
|
|
|
+// CONCLUSION
|
|
|
+/////////////////////////////////////////////////////////////////////////
|
|
|
+// => C'est la somme de tous les facteurs de 10551381 !
|
|
|
+
|
|
|
+using System;
|
|
|
+
|
|
|
+namespace D19._2
|
|
|
+{
|
|
|
+ class Program
|
|
|
+ {
|
|
|
+ static void Main(string[] args)
|
|
|
+ {
|
|
|
+ double r0 = 0;
|
|
|
+ double r5 = 10551381;
|
|
|
+
|
|
|
+ for (int r4 = 1; r4 <= r5 / 2; r4++)
|
|
|
+ if (r5 % r4 == 0) r0 += r4;
|
|
|
+ if (r5 > 1) r0 += r5;
|
|
|
+
|
|
|
+ Console.WriteLine($"The answer is : {r0}");
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|