Script / CSS

G1sUtil.js

G1sBlogger.js

G1sNavigationList.js

G1sCode

Posts List

2012년 2월 24일 금요일

[Project Euler] 16. 2^(1000)의 각 자리수를 모두 더하면?

16. 2^(1000)의 각 자리수를 모두 더하면?
2^(15) = 32768 의 각 자리수를 더하면 3 + 2 + 7 + 6 + 8 = 26 입니다.

2^(1000)의 각 자리수를 모두 더하면 얼마입니까?
Click

2의 1000승이므로 역시나 너무 큰 값이 나오니 10의 자리씩 잘라서 계산.
다 구한 후 10으로 나눠가며 나머지값을 더해주었습니다.
<script>
function powLargeNum(n,k){
 var result = new Array();
 result[0] = 1;
 var cnt = 0;
 for(var i=0; i<k; i++){
  for(var j=cnt; j>=0; j--){
   result[j] = result[j] * n;
   if(result[j] / 10000000000 >= 1){
    if(result[j+1] == null){
     result[j+1] = parseInt(result[j]/ 10000000000);
     if(j == cnt) cnt++;
    }
    else
     result[j+1] += parseInt(result[j]/ 10000000000);
    result[j] = result[j] % 10000000000;
   }
  }
 }
 return result;
}

function sumDigitArray(n){
 var l = n.length;
 var sum = 0;
 for (var i = 0; i < l; i++) {
  temp = n[i];
  while (temp != 0) {
   sum += temp % 10;
   temp = parseInt(temp / 10);
  }
 }
 }
</script>

댓글 없음:

댓글 쓰기