| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- // 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}");
- }
- }
- }
|