Dupla precisão em C ++ (ou pow (2, 1000))
Estou trabalhando no Project Euler para aprimorar minhas habilidades de codificação em C ++, em preparação para o (s) desafio (s) de programação que teremos no próximo semestre (já que eles não nos permitem usar Python, boo!).
Estou no 16º lugar e estou tentando encontrar uma maneira de manter a precisão real durante 2 ° °°°
Por exemplo:
int main(){
double num = pow(2, 1000);
printf("%.0f", num):
return 0;
}
impressões
1071508607186267320948425049060001810561405000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Qual está faltando a maioria dos números (do python):
>>> 2**1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376L
Concedido, eu posso escrever o programa com um liner Python 1
sum(int(_) for _ in str(2**1000))
isso me dá o resultado imediatamente, mas estou tentando encontrar uma maneira de fazer isso em C ++. Alguma dica? (haha ...)
Editar:
Algo fora das bibliotecas padrão é inútil para mim - apenas o código da árvore morta é permitido nesses concursos, e provavelmente não vou imprimir 10.000 linhas de código externo ...