10~1000까지 각 숫자 분해하여 곱하기의 전체 합 구하기

예로, 10~15까지의 각 숫자 분해하여 곱하기의 전체 합은 다음과 같다.

10 = 1 * 0 = 0
11 = 1 * 1 = 1
12 = 1 * 2 = 2
13 = 1 * 3 = 3
14 = 1 * 4 = 4
15 = 1 * 5 = 5

그러므로, 이 경우의 답은 0+1+2+3+4+5 = 15

구현
+1 1에서 9까지는 어떻게 표현하나요? 1 = 1 * ? = ? 2 = 2 * ? = ? - 디디, 2016/04/09 09:23 M D
+1 10부터 시작하는 것으로 바꾸었습니다. - hana11, 2016/04/09 10:11 M D
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

150개의 풀이가 있습니다. 13 / 15 Page


    from operator import mul
    print sum(reduce(mul,( int(y)  for y in str(x) )) for x in range(10,1000))
    #python 2.7xx

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
{.python}
파이썬 2.7입니다
v=[]
for x in range(10,1001):
    nString = str(x)
    mult = 1
    if not ('0' in nString):
        for y in range(0,len(nString)):
            mult *= int(nString[y])
        v.append(mult)

print sum(v)
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

매트랩으로 작성하였습니다. 10~99까지, 100~999까지 2자리수와 3자리수로 나눠서 계산하였습니다. fix함수는 몫을 나타내고, mod함수는 나머지를 나타냅니다. 3자리 숫자(abc)의 경우 100으로 나눈 몫으로 첫째자리를 구하고(a), 10으로 나눈 몫에서 다시 10으로 나눈 나머지로 가운데자리(b)를 구하였습니다. 셋째자리(c)는 10으로 나눈 나머지로 구하였습니다.

result = 0;
for i = 10 : 1000
    if fix(i/10) < 10
        tmp = fix(i/10) * mod(i,10);
    else
        tmp = fix(i/100) * mod(fix(i/10),10) * mod(i,10);
    end
    result = result + tmp;
end
result
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

Python 2.7로 작성하였습니다. 답 : 93150

sum1 = 0
for x in xrange(10, 1001):
    x_s = str(x)
    mul = int(x_s[0])
    for x in x_s[1:]:
        mul = mul * int(x)
    sum1 = sum1+mul

print '총합 = ', sum1
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
$start = 10;
$end = 1000;
$total = 0;
for($num=$start;$num<=$end;$num++){
    $array = str_split($num) ;
    $total += array_product($array);

}
echo $total;
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
print(sum([eval('*'.join(str(x))) for x in range(10,1001)]))

#### 2017.01.05 D-413 ####

오호 역시 같은코드가 있네요 ㅎ

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
Array(...Array(991)).map((v, i) => i + 10).map(v => v.toString().split('').reduce((v1, v2) => Number(v1) * Number(v2))).reduce((v1, v2) => v1 + v2);

ES6로 작성하였습니다.

sum value = 93150; 인가보군요

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

자바소스입니다.

public void t505() {
    long sum = 0L;
    for (int inx = 10; inx <= 1000; inx++) {
        String num = Integer.toString(inx);
        if (num.indexOf("0") > -1) {
            continue;
        } else {
            long sub = 1L;
            int cnt = num.length();
            for (int jnx = 0; jnx < cnt; jnx++) {
                sub *= Integer.parseInt("" + num.charAt(jnx));
            }
            sum += sub;
        }
    }
    System.out.println(sum);
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
from functools import reduce
def decom_mul_sum(n1,n2):
    return sum(map(lambda n: reduce(lambda x,y: int(x)*int(y), str(n)), range(n1,n2+1)))

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

Matlab 2012

sum = 0;
for i =10 : 1000
    k = num2str(i);
    mult = 1;
    for n = 1: length(k)
        mult = str2double(k(n))*mult;
    end 
    sum = sum + mult;
end

답: 93150

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

※ 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.

구현 x 2
연관 문제
KimSeonbin, 2017/02/20 17:19

언어별 풀이 현황
전 체 x 150
r x 1
java x 28
python x 62
javascript x 5
cpp x 23
기 타 x 18
matlab x 2
go x 1
cs x 6
objectivec x 1
php x 2
ruby x 1