n! 이라는 표기법은 n × (n − 1) × ... × 3 × 2 × 1을 뜻합니다.
예를 들자면 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800 이 되는데,
여기서 10!의 각 자리수를 더해 보면 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 입니다.
100! 의 자리수를 모두 더하면 얼마입니까?
Click 예를 들자면 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800 이 되는데,
여기서 10!의 각 자리수를 더해 보면 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 입니다.
100! 의 자리수를 모두 더하면 얼마입니까?
단순 계산. 너무 큰 수이므로 10의 10승씩 잘라서 배열에 넣어가며 계산.
<script> /** 모든 배열의 각 자릿수를 더한 값. * @param {int[]} n : 배열. * return {int} */ 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); } } return sum; } /* n!의 값을 10의자리씩 잘라서 배열로 return; * @param {Object} n : */ function factorial(n){ var r = new Array(); r[0] = 1; var cnt = 0; for(var i=1; i<=n; i++){ for(var j=cnt; j>=0; j--){ r[j] *= i; if(r[j] > 1000000000){ if(j==cnt) r[++cnt]= parseInt(r[j]/1000000000); else r[j+1]+=parseInt(r[j]/1000000000); r[j] = r[j]%1000000000 } } } return r; } function p020(n){ alert(sumDigitArray(factorial(n))); } </script>
댓글 없음:
댓글 쓰기