프로젝트 오일러 16
projecteuler, cpp다룰 수가 크기 때문에 int 배열을 조작하는 곱셈 함수를 구현한다.
받아올림값만 잘 신경쓰면 된다..
/*
Problem 16 - Power digit sum
*/
#include <iostream>
#include <cmath>
#include <cstring>
#include <stdio.h>
#include <string.h>
using namespace std;
void multiply( int result[], int mul, int maxlen)
{
int carry = 0;
for(int i=0; i<maxlen; i++)
{
//cout << "i=" << i << " carry=" << carry << endl;
int prev_carry = carry;
int val = result[i] * mul;
carry = val/10;
result[i] = val%10 + prev_carry;
}
}
int main(int argc, char** argv)
{
int sum[1000] = {0,};
sum[0] = 1;
for(int i=0; i<1000; i++)
{
multiply( sum, 2, 1000);
//for(int i=0; i<10; i++) { cout << sum[i] << " "; }
cout << endl;
}
int nsum = 0;
for(int i=0; i<1000; i++)
{
nsum += sum[i];
}
cout << "nsum=" << nsum << endl;
return 0;
}