Double precision in C++ (or pow(2, 1000))

前端 未结 7 621
情书的邮戳
情书的邮戳 2021-01-14 19:38

I\'m working on Project Euler to brush up on my C++ coding skills in preparation for the programming challenge(s) we\'ll be having this next semester (since they don\'t let

7条回答
  •  轮回少年
    2021-01-14 20:01

    UPDATE: I just browsed to the Euler Problem site and found that Problem 13 is about summing large integers. The iterated method can become very tricky after a short while, so I'd suggest to use the code from Problem #13 you should have already to solve this, because 2**N => 2**(N-1) + 2**(N-1)

    Using bignums is cheating and not a solution. Also, you don't need to compute 2**1000 or anything like that to get to the result. I'll give you a hint:

    Take the first few values of 2**N:

    0 1 2 4 8 16 32 64 128 256 ...
    

    Now write down for each number the sum of its digits:

    1 2 4 8 7 5 10 11 13 ...
    

    You should notice that (x~=y means x and y have the same sum of digits)

    1+1=2, 1+(1+2)=4, 1+(1+2+4)=8, 1+(1+2+4+8)=16~=7 1+(1+2+4+8+7)=23~=5
    

    Now write a loop.

    Project Euler = Think before Compute!

提交回复
热议问题