501개의 풀이가 있습니다.
#pythion 3.5
print(eval('+'.join('*'.join(str(x)) for x in range(10, 1001))))
파이썬 3.5.1
print(sum(eval('*'.join(str(x))) for x in range(10,1001)))
C++
#include <iostream>
using namespace std;
int main(){
int result;
for(int x=0;x<=990;x++){
string st = to_string(x+10);
int temp = 1;
for(int y=0; y<st.length(); y++){
temp *= st.at(y) - '0';
}
result += temp;
}
cout << result;
return 0;
}
자바
public class MyClass {
public static void main(String[] args){
String[] list = new String[991];
int result = 0;
for(int x = 10; x < 1001; x++){
list[x-10] = ""+x;
}
for(String i:list){
char[] temp = i.toCharArray();
int mul = 1;
for(char j:temp){
mul *= Character.getNumericValue(j);
}
result += mul;
}
System.out.println(result);
}
}
저 루비로 짠 코드를 보고 어떻게 하면 더 짧아질려나 한참을 고민했습니다. 합성함수를 연속으로 하지도 못하고...
자바 로 풀이
답 : 93150
풀이 : i 값 Stirng 변환 -> String 값 char배열로 변환 -> 루프 실행 -> char 값 넘버 변환 -> cnt 에 곱셈 -> total 에 덧셈
public static void main(String[] args){
int total = 0;
for(int i=10; i<=1000; i++){
Integer num = i;
int cnt = 1;
String value = num.toString();
char[] chArray = value.toCharArray();
for( char ch : chArray){
cnt *= Character.getNumericValue(ch);
}
total += cnt;
}
System.out.println(total);
}
sum=0
for n in range(10,1001):
part=1
for i in str(n):
part*=int(i)
sum+=part
print(sum)
C로 풀었습니다.
#include<stdio.h>
int main(void){
int start, end, nam, mok;
int i, k;
int array[1000];
int value;
int sum = 0;
printf("두 숫자를 입력하시오.\n");
scanf("%d", &start);
scanf("%d", &end);
for(i=start; i<end+1; i++){
mok=i;
value = 1;
while(mok>0){
nam=mok%10;
mok = mok/10;
printf("%d ", nam);
value=value*nam;
}
printf("value: %d \n", value);
array[i]=value;
sum= sum+ value;
}
printf("\n");
for(i=start; i<end; i++){
printf("%d + ", array[i]);
}
printf("%d = %d \n", array[end], sum);
printf("\n");
}
Ruby
msum = ->l,h { (l..h).sum {|n| n.digits.reduce:* } }
or
p (10..1000).sum {|n| n.digits.reduce:* }
Test
expect(msum[1,10]).to eq 45
expect(msum[10,15]).to eq 15
expect(msum[10,1000]).to eq 93150
정답은 93150 div_multiply: 분해해서 곱하고, sumOfMultiple로 10~1000까지 돌렸습니다.
public int sumOfMultiple(int num1, int num2){
int result = 0 ;
for(int i = num1 ; i <= num2 ;i++){
result += div_multiply(i);
}
System.out.println(result);
return result;
}
public int div_multiply(int num){
int result = 1;
result *= num % 10 ;
while(num > 10 ){
num = num / 10 ;
result *= num % 10 ;
}
return result;
}
PHP로 해봤습니다.
$sum = 0;
for($i=10; $i<=1000; $i++) {
$str = implode("*", str_split((string)$i));
$sum += eval("return (".$str.");");
}
echo $sum;
# 한글 처리 in Atom 1.21.1 + Anaconda(Python 3.6.3)
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')
# # 예로, 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
print(eval('+'.join(['*'.join(str(i)) for i in range(10, 1001)])))
파이썬 3.6
def multotal(a,b):
mul= 1
total = 0
for i in range(a,b+1):
for g in str(i):
mul *= int(str(i)[str(i).index(g)])
total += mul
mul = 1
print(" ☞ Total of Multiple = ",total)
start = int(input(" ▶ 범위의 시작 숫자를 입력하세요: "))
end = int(input(" ▶ 범위의 끝 숫자를 입력하세요: "))
print ("\n"," >>> 각 숫자 곱셈의 합산 범위는 : %d ~ %d" %(start,end),"\n")
multotal(start, end)
▶ 범위의 시작 숫자를 입력하세요: 10
▶ 범위의 끝 숫자를 입력하세요: 1000
>>> 각 숫자 곱셈의 합산 범위는 : 10 ~ 1000
☞ Total of Multiple = 93150
a = 0
for i in range(10,1001): l=[] l.append(str(i)) b = 1 for j in range(len(l[0])): b *= int(l[0][j]) a += bprint a
93150
int sum = 0;
for (int i = 10, t = i; i <= 1000; t = ++i)
{
int r = t % 10;
while ((t /= 10) > 9) r *= t % 10;
sum += r *= t % 10;
}
Console.Write(sum);
3.5 로 작성했습니다.
multisum=1
for a in range(10,1001):
x=1
for b in str(a):
x=x*int(b)
multisum=multisum+x
print("multisum=",multisum)
reduce 좀 기본 함수로 돌려놔주세요 GVR님아 ㅠㅠ
from functools import reduce
def do(n):
return reduce(lambda x, y: x * y, [int(x) for x in str(n)], 1)
print(sum([do(x) for x in range(10, 1001)]))
var sum = 0;
for (var i = 10; i <= 1000; i++) {
var data = [];
var multiple = 1;
for (var j = 0; j < i.toString().length; j++) {
multiple *= Number(i.toString().substring(j,1+j));
}
sum += multiple;
}
console.log(sum);
자바로 작성
int sum=0;
for(int i=10;i<=1000;i++){
int result=1;
// i값이 내부에서 변하면 않된다.
// 임시변수 n에 대입하고 n으로 계산
int n = i;
while(n>0){
result *= n%10;
n /= 10; // 1의자리 버리기
}
// System.out.println(i + ":" + result);
sum += result;
}
System.out.println("답 : " + sum);
sum = 0
mul = 1
for i in range(10,1001):
a = str(i)
b = list("%d" %i)
for j in range(len(b)):
mul = mul * int(b[j])
sum = sum+mul
mul=1
sum
답은 93150 처음으로 문제푸는데 오래걸렸지만 뿌듯하네요
public class numberqom {
public static void main(String[] args) {
int sum = 0;
int sum1=0;
int k1;
int k;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
k = i * j;
sum += k;
System.out.println(i + "*" + j + "=" + k);
}
System.out.println(sum);
}
for (int i1 = 1; i1 < 10; i1++) {
for (int j1 = 0; j1 < 10; j1++) {
for (int i2 = 0; i2 < 10; i2++) {
k1 = i1 * j1*i2;
sum1 += k1;
System.out.println(i1 + "*" + j1+"*" +i2+ "=" + k1);
}
}
System.out.println(sum1);
}
System.out.println(sum+sum1);
}
}
result = 0
for j in range(11, 1001):
mul = 1
for i in str(j):
mul *= int(i)
result += mul
print(result)
print("=" * 20)
print(sum([eval("*".join(str(x))) for x in range(10, 1001)]))
b=0 #1의자리
a=0 #10의자리
c=0 #100의자리
d=0 #1000의자리
e=0
while d*1000+c*100+a*10+b<1001:
#print(d*1000+c*100+a*10+b)
if c==0:
e=e+a*b
else:
e=e+a*b*c
if b==9:
if a==9:
a=0
b=0
c=c+1
if c==10:
a=0
b=0
c=0
d=d+1
else:
b=0
a=a+1
else:
b=b+1
print(e)
93150
비효율적이란건 알아요 ㅜㅜ
>>> import operator
>>> from functools import reduce
>>> from itertools import product
>>> calc = lambda digits: sum(reduce(operator.mul, i) for i in product(range(1,10), repeat=digits))
>>> calc(2) + calc(3)
93150
@Test
public void 각숫자분해하고곱하기합() {
double result = 0d;
for (int i = 10; i < 1001; i++) {
result += (i % 10) == 0 ? 0 : basicSum(i);
}
logger.debug("{}", result);
}
private double basicSum(double head) {
double first = (head % 10);
double second = head < 100 ? Math.floor(head / 10) : Math.floor(head / 10) %10;
double third = Math.floor(head / 100);
double result = head < 100 ? first * second : first * second * third;
logger.debug("{} >>> {} * {} = {}", head, first , head > 100 ? String.format("%s * %s", second, third) : second, result);
return result;
}
답 : 93150
storage = 0
for b in range(0,10): #100
for c in range(0,10): #10
for d in range(0,10): #1
result = (b * 100) + (c * 10) + d
if len(str(result) ) == 2:
multiply = c * d
storage += multiply
if len(str(result) ) == 3:
multiply = b * c * d
storage += multiply
print ("Result = %s" % (storage) )
c = 0 #global
def disassemble(i):
b = 1
for j in str(i):
list = []
list.append(j)
for x in list:
b *= 1 * int(x)
c += b
global c
for i in range(10,1001):
disassemble(i)
print (c)
total = 0
line = ""
for i in range(10,1001):
value = 1
for j in str(i):
value = value * int(j)
total = total + value
print ("Total Sum is %d\n" %total)
sum(sapply(c(10:1000),
function(x){for(i in 1:nchar(x)) tmp2[i] = as.integer(substr(x, i, i)); prod(tmp2)}))
R에서 작성했습니다. 감사합니다.
Python 3.5
total = 0
for num in range(10, 1001):
value = 1
for s in str(num):
value *= int(s)
total += value
print(total)
total_result = 0
for i in range(10, 1001):
num_result = 1
for j in range(0, len(str(i))):
num_result = num_result * int((str(i)[j]))
total_result = total_result + num_result
print(total_result)
sum = 0
sum_mid = 0
for number in range(10,1001):
sum_mid = 0
for idx in range(0,len(str(number))):
if idx == 0:
sum_mid = int(str(number)[idx])
else:
sum_mid = sum_mid * int(str(number)[idx])
sum += sum_mid
print 'result = %s' %sum
public class num01 {
public static void main(String[] args) {
int target = 1000;
int[] list = new int[target]; // 1000개의 array 생성
int sum = 0;
int multi = 1;
for(int x = 0; x < list.length; x++){ // 디버깅을 위해,,,
list[x] = x;
if(x == 999) {
System.out.println("x는 999다");
}
}
for(int x = 10; x < list.length+1; x++){
char[] c = (""+x).toCharArray();
for(int i=0;i<c.length; i++) {
multi = multi * Character.getNumericValue(c[i]);
System.out.println("multi = " + multi);
}
sum += multi;
multi = 1;
}
System.out.println("sum = " + sum);
}
}
C++이에요.정답인 93150을 출력합니다.
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int sum = 0;
for (int i = 10; i <= 1000; i++){
int val = i;
int prod = 1;
while (val){
prod *= (val%10);
val /= 10;
}
sum += prod;
}
printf("%d\n",sum);
return 0;
}
파이썬 2.7
add=list()
a=list()
sum=0
for k in range(10,1001):
u=str(k)
a.append(u)
for i in a:
if len(i)==2:
add.append(int(i[0])*int(i[1]))
elif len(i)==3:
add.append(int(i[0])*int(i[1])*int(i[2]))
else:
add.append(int(i[0])*int(i[1])*int(i[2])*int(i[3]))
for j in add:
sum=sum+j
print sum
package main
import (
"strconv"
"fmt"
)
func main() {
sum := 0
for i := 10; i <= 1000; i++ {
s := strconv.Itoa(i)
calc := 1
for _, v := range s {
num := (int)(v - '0')
calc *= num
}
sum += calc
}
fmt.Println(sum)
}
결과는 93150 입니다.
다른 분 코드를 참고하여 작성했습니다. '*'.join() << 요건 참 신기한 기능이네요 ㅎㅎ
python 3.5
st = 10
ed = 1000
sum = 0
for n in range(st, ed+1): #range 함수를 사용하여 10~1000 까지 loop 수행
# 1. 각 숫자마다 List 화하여 '*' 를 Join , (10경우 [1, 0]으로 리스트, join 함수에 의해 1*0 이 됨. )
# 2. eval 함수로 실제 연산,
# 3. 연산된 값을 sum 함수에 합산대입
sum += eval('*'.join(list(str(n))))
print(sum)
Swift 2.2로 작성하였습니다.
let result = (10...1000)
.map { (i: Int) -> [Int] in String(i).characters.map { j -> Int in Int(String(j))! } }
.map { (i: [Int]) -> Int in i.reduce(1, combine: *) }
.reduce(0, combine: +)
print(result)
array = [0,0,0,0,0,0,0,0,0,0]
result = 0
for n in range(10, 1001) :
temp = 1
while n > 0 :
temp *= n % 10
n = n // 10
result += temp;
print (result)
C코드. void main() { int a,b,c,d,sum; int i; sum=0; int total=0;
for(i=10; i<=1000; i++)
{
a=i%10;
b=i/10;
sum= a*b;
total+=sum;
}
printf(" %d\n", total);
}
aList= []
sumList = 0
for num in range(10,1001):
while num > 0:
temp = num%10
aList.append(temp)
num //= 10
multiplied_num=1
for i in aList:
multiplied_num *= i
sumList += multiplied_num
aList=[]
print(sumList)
자바입니다.
public class 각숫자분해하여_곱하기의_전체합_구하기_1부터1000 {
public static void main(String[] args) {
int sum = 0;
for(int i=10; i<=1000; i++) {
String strNum = String.valueOf(i);
int mult = 1;
for(int j=0; j<strNum.length(); j++) {
mult *= Integer.parseInt(String.valueOf(strNum.charAt(j)));
}
sum += mult;
}
System.out.println(sum);
}
}
void main() { int i = 10, a, integer = 0, b, it = 1, result = 0; printf("숫자를 입력하세요 : "); scanf("%d", &a); for (i; i <= a; i++){ b = i;
while (b != 0){
integer = b % 10;
b = b / 10;
it *= integer;
}
result += it;
it = 1;
}
printf("값은 = %d \n", result);
}
result=[]
for k in range(10, 1001):
k0=str(k)
r=1
for i in range(len(k0)):
r=r*int(k0[i])
result.append(r)
print(sum(result))
C로 작성했습니다.
#include <stdio.h>
void mod(int i);
int main(void)
{
int i=0;
printf("10~1000까지의 숫자를 입력하세요.\n");
scanf_s("%d", &i);
if (i > 9)
{
mod(i);
}
else
{
printf("10미만의 숫자는 입력 불가능 합니다.\n");
}
return 0;
}
void mod(int i)
{
int a;
int temp;
int sum=0;
int tem;
tem = i;
for (i; i > 9; i--) // i값을 1씩 줄여나간다
{
temp = i; // i값은 변하면 안되기 때문에 temp에 i값을 저장하고 temp로 계산
int mul = 1; // mul에는 계속 값이 쌓이기 떄문에 한번 실행 후 다시 1로 초기화하여 계산
while (temp > 0) // temp가 0보다 클때까지 돌아간다
{
a = temp % 10; // temp를 모드연산하여 a에다 저장
mul *= a; // a * mul을 mul에 저장 ex) 257 = 2 x 5 x 7을 수행하기위해 mul에 저장
temp = temp / 10; // 모드연산이 한번 일어난 뒤 입력받은값의 몫을 기준으로 0보다 클때까지 계속해서 진행
}
sum += mul; // 곱한 값을 가지고 있는 mul을 sum에다 대입해서 계속해서 뒤에 있는 수의 곱들을 더해 누적해서 저장
}
printf("%d까지의 곱의 합은 %d 입니다.\n", tem, sum);
}
C로 재귀를 이용하여 작성했습니다.
#include <stdio.h>
int get(int i);
int main(void)
{
int total = 0;
int i;
for (i = 10; i <= 1000; i++)
{
total += get(i);
}
printf("%d", total);
}
int get(int i)
{
if (i < 10)
return i;
else
{
return i % 10 * get(i / 10);
}
}
파이썬 3.4 입니다.
sum_num = 0
start = int(input("start: "))
end = int(input("end: "))
for i in range(start,end+1):
list_num = [str(i)[x] for x in range(len(str(i)))]
mul_num = 1
for j in range(len(str(i))):
mul_num *= int(list_num[j])
sum_num += mul_num
print(sum_num)
결과는
pi@raspberrypi:~/example $ python3 summulnum1.py
start: 10
end: 1000
93150
int arr[] = new int[4]; int total=0;
for(int i = 10 ; i<=1000 ; i ++ ){
if(i <100){
arr[0]= i%10;
arr[1]= i/10%10;
total+=arr[0]*arr[1];
}else if(i <1000){
arr[0]= i%10;
arr[1]= i/10%10;
arr[2]= i/100%10;
total+=arr[0]*arr[1]*arr[2];
}
}
System.out.println(total);
c++로 풀었습니다.
#include <iostream>
using namespace std;
int main(){
int start, end;
int num=0;
int temp=0,result=0;
cin >> start;
cin >> end;
for(int i=start; i<=end ; i++){
temp = i % 10;
num = i/10;
while(num>0){
temp = temp * (num % 10);
num = num/10;
}
result = result + temp;
}
cout << result << endl;
return 0;
}
public static void main(String[] args) {
int sum=0,mul=0;
String str;
char[] ch = new char[]{};
for(int i=10; i<=1000; i++){
str = i+" ";
ch = str.toCharArray();
mul=1;
for(int j=0; j<ch.length-1; j++){
mul*=(int)ch[j]-48;
}
sum+=mul;
}
System.out.println(sum);
}
a=int(input("Strat : "))
b=int(input("End : "))
c=0
for i in range(a,b+1):
c+=eval("*".join(str(i)))
print(c)
Python 3.5.2
int main(void) { int i, j, k,l; int save_num2[10] = {}; int save_num[4] = {0,0,0,0 }; int analsist = 0; int temp = 0; int sum2 = 0; int sum1 = 0; for (i = 10; i < 1001; i++) { sum1 = 1; analsist = i; j = 0; k = 0; for (;analsist>0;) { temp = analsist % 10; save_num[j] = temp; j++; analsist = analsist / 10;
}
for (k = 0; k < j; k++)
{
sum1 = sum1*save_num[k];
save_num[k] = 0;
}
sum2 = sum2 + sum1;
}
printf("0부터 %d까지의 숫자 분석 후 곱의 합은 %d 입니다\n", i-1,sum2); system("pause"); }
int val = 0;
for(int i = 10 ; i < 1001 ; i++) {// 10 ~ 1000
String num = Integer.toString(i);// to string
int sum=1;
for(int j = 0 ; j <= num.length()-1 ; j++ ) {// 각 숫자의 index 찾기위한 index지정
sum *= Integer.parseInt(num.charAt(j)+"");// 숫자마다 *연산 하여 sum 담음
}
val += sum;// sum에 담아진 각 숫자를 val 최종적으로 + 합산함
}
System.out.println("10 to 1000 multi div sumVal : " + val);
Java
def multi_numbs(start, end):
result_of_multi = []
for num1 in range(start,end+1):
result_multi = 1
for i in str(num1):
multi = int(i)
result_multi *= multi
result_of_multi.append(multi)
return sum(result_of_multi)
print multi_numbs(10,1000)
var result = 0;
for(var i=1; i<=1000; i++){
var num = i;
var multi = 1;
while (num > 0) {
multi *= num % 10;
num = parseInt(num/10);
}
result+=multi;
}
console.log(result);
def test_2(start_num, end_num):
sum = 0
for i in range(start_num, end_num+1):
sum += divide_num(i)
return sum
def divide_num(num):
sum = 1
str_from_num = list("%d" % num)
for i in str_from_num:
sum *= int(i)
return sum
print(test_2(10, 1000))
package codingdojang;
import java.util.Scanner;
class sumc{
Scanner sc;
int n;
int sum =0;
sumc(){
sc = new Scanner(System.in);
System.out.print("숫자입력 :");
n = sc.nextInt();
}
public void check(){
for(int i = 10; i<=n;i++){
if(i<100){
sum = sum + (i%10) *(i/10%10);
}
else if(i<1000){
sum = sum + (i%10) *(i/10%10) * (i/100%10);
}
else if(i<10000){
sum = sum + (i%10) *(i/10%10) * (i/100%10) * (i/1000%10);
}
}
}
public void disp(){
System.out.println("합 : "+sum);
}
}
public class lv1_02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
sumc s = new sumc();
s.check();
s.disp();
}
}
/* 2016.08.16.Tue
10 ~ 1000 까지 각 숫자를 분해하여 곱한 후, 전체 합 구하기
*/
#include <stdio.h>
#define MAX 1001
int main(void)
{
#ifdef MY_ANSWER
int i;
int temp, buf, sum = 0;
for (i = 10; i < MAX; i++) {
temp = i; buf = 1;
while (temp != 0) {
buf *= temp % 10;
temp /= 10;
}
printf("i = %3d : buf = %3d\n", i, buf);
sum += buf;
}
printf("===== print out sum (A1) =====\n");
printf("sum = %3d\n", sum);
#elif OTHER_ANSWER
#endif
return 0;
}
for n in range(10,1001): //처음 범위
for i in str(n): //n을 문자열로 바꿈
mul = 1 //곱셈 값이 저장될 변수
mul *= int(i) //곱셈
res += mul //합 결과가 저장됨
print res
2.7.6
#include <stdio.h>
void main() {
int arr[10] = { 0, };
int i, j;
int len;
for (i = 26; i <= 43; i++) {
j = i;
while (j != 0) {
arr[j % 10]++;
j /= 10;
}
}
for (i = 0, len = sizeof(arr) / sizeof(arr[0]); i < len; i++) {
if(arr[i] != 0)
printf("%d : %d \n", i, arr[i]);
}
}
#include <string>
#include <iostream>
const int START = 1;
const int END = 1000;
void totalSum(unsigned int& total, int& value);
int main() {
unsigned int total = 0;
for (int i = START; i <= END; i++)
{
totalSum(total, i);
}
std::cout << "Total : " << total << std::endl;
return 0;
}
void totalSum(unsigned int& total, int& value) {
std::string strVal = std::to_string(value);
unsigned int multiple = 1;
for (int index = 0; index < strVal.length(); index++)
{
const char digit = strVal.at(index);
multiple *= std::atoi(&digit);
}
total += multiple;
}
C++ 작성 Total : 93195
Python 2.7
sum = 0
for i in range(10,1001):
tmp1 = str(i)
tmp2 = 1
for j in tmp1:
tmp2 = tmp2 * int(j)
sum += tmp2
print sum
list=[]
sum=0
for i in range(10,1001):
num=1
for j in str(i):
num*=int(j)
sum+=num
list.append(num)
print sum
def CalcMultiValue(start, end):
totalSum = 0
for i in range(start,end):
multipleValue = 1 #default value must be '1' not '0'
for j in str(i):
multipleValue *= int(j) #mutiply each value after changing str -> int
totalSum += multipleValue
return totalSum
print(CalcMultiValue(10,1001))
def multiplie():
result = 0
for loop in range(10,1001):
temp = 1
for num in str(loop):
temp *= int(num)
result += temp
return result
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int start = 10;
int end = 1000;
Int64 result = add(start, end);
Console.WriteLine(result);
}
static Int64 add(int _start, int _end)
{
Int64 result = 0;
for(int i = _start; i <= _end; i++)
{
int mok = i;
int nam;
Int64 sub_result = 1;
while(mok != 0)
{
nam = mok % 10;
mok = mok / 10;
sub_result *= nam;
}
//Console.WriteLine(sub_result);
result += sub_result;
}
return result;
}
}
}
total = 0
for number in range(10, 1001) :
strNumber = str(number)
tmp = 1
for one in strNumber :
tmp = tmp * int(one)
total = total + tmp
print(total)
자바
package study;
public class study {
public static void main(String[] args) {
System.out.println(solve(10, 1000));
}
public static int solve(int a, int b){
int sum=0, mul, temp;
for(int i=a; i<b+1; i++){
temp=i;
mul=1;
while(temp>0){
mul*=temp%10;
temp/=10;
}
sum+=mul;
}
return sum;
}
}
#include <stdio.h>
#define START 10
#define END 15
int main(){
int n = 0;
int m = 1;
int s = 0;
for(int i = START; i <= END; i++) {
n = i;
if(n == 0) { m = 0; }
while(n > 0) {
m *= n % 10;
n /= 10;
}
s += m;
m = 1;
}
printf("s:%d", s);
}
python3.6.0
t=[]
for i in range (1,10):
for j in range (1,10):
# j를 0부터 : if문 필요
# j를 1 부터 : if문 필요 없지만 내가 판단한 것
#뭐가 프로그래밍적으로 옳은지? 둘다 옳으면 빠른것- 2번째 ??
t.append(i*j)
for i in range (1,10):
for j in range (1,10):
for k in range (1, 10):
t.append(i*j*k)
#print(len(t))
sum = 0
for i in range (len(t)):
sum +=t[i]
print (sum)
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void mulnumber(int, int);
//두 숫자를 임의로 입력받는다고 가정
int main() {
int start, end;
puts("두 숫자를 입력 : ");
scanf_s("%d %d", &start, &end);
mulnumber(start, end);
system("pause");
return 0;
}
void mulnumber(int start, int end) {
int p, mul, sum = 0;
for (int i = start; i <= end; i++) {
p = i;
mul = p % 10;
while (p > 10) {
p /= 10;
mul = mul * (p % 10);
}
sum += mul;
}
printf("총 합은 %d", sum);
}
def multi_numbs(start, end):
result_of_multi = []
for num1 in range(start,end+1):
result_multi = 1
for i in str(num1):
multi = int(i)
result_multi *= multi
result_of_multi.append(multi)
return sum(result_of_multi)
print multi_numbs(10,1000)
#include <stdio.h>
#include <stdlib.h>
int main() {
int count;
int result = 0;
int Alladd = 0;
int quotient = 0;
int remainder = 0;
for(count = 10; count < 1000+1; count ++)
{
quotient = count / 10;
remainder = count % 10;
result = quotient * remainder;
Alladd += result;
}
printf("%d\n", Alladd);
}
Python 3.5.2로 풀었습니다.
result = 0
for x in range(10, 1000):
c = x // 100
b = (x % 100) // 10
a = x % 10
if c == 0:
result += a * b
else:
result += c * b * a
print(result)
#include<iostream>
using namespace std;
int main()
{
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
int total = 0;
for (int i = 10;i < 1000;i++)
{
if (i >= 10 && i < 100)
total += ((i / 10)*(i % 10));
else if (i >= 100 && i<1000)
total += ((i / 100)*(((i%100)-(i%10))/10)*(i % 10));
}
cout << "총 합은 " << total << "입니다." << endl;
/*총 합은 93150입니다.*/
}
int main(){
int num; //입력받을 숫자
int i,k,r=0, sum =0; //k는 arr배열 크기; r은 result_arr크기
int j, w, z; //반복문에 사용되는 변수
int arr[10]; //분해된 숫자 임시 저장 배열, 계속 초기화됨
int result_arr[20]; //분해된 숫자 곱 저장 배열.
//result_arr초기화
for(j = 0; j<20; j++) {
result_arr[j] = 1;
}
for(i = 0; i<5; i++) {
printf("분해할 숫자 입력(10~1000): ");
scanf("%d", &num);
//숫자 분해해서 배열에 입력
k = 0;
while( num != 0) {
arr[k] = num % 10;
num /= 10;
k++;
}
//arr배열에 분리된 숫자 곱해서 result_arr에 입력
for(z = 0; z<k; z++) {
result_arr[r] *= arr[z];
}
r++; //arr배열에 저장된 숫자 모두 곱한 것이 result_arr배열 하나의 인덱스에 입력되도록.
}
//최종 저장된 result_result배열의 값 출력, 모든 원소 합 구하기
for(w = 0; w<r; w++) {
sum += result_arr[w];
printf("%d + ", result_arr[w]);
}
printf("= %d", sum);
return 0;
}
public static void main(String[] args) {
int sum=0;
for(int i=10; i < 1000 ; i++){
if(i/1000 > 0){
sum += (i/1000) * ((i%1000)/100) * ((i%100)/10) * (i%10);
}else if(i/100 > 0){
sum += (i/100) * ((i%100)/10) * (i%10);
}else{
sum += (i/10) * (i%10);
}
}
System.out.println(sum);
}
파이썬3.5
import functools
import operator
f = lambda n: functools.reduce(operator.mul, (int(x) for x in str(n)))
r = sum(f(n) for n in range(10, 1000+1))
print(r)
# 93150
Java
import java.util.function.Function;
public class DivideNSum {
private static Function<Integer, Integer> divideNMultiply = n -> {
int muliply = n % 10;
n = n / 10;
while (n > 0) {
muliply *= n % 10;
n = n / 10;
}
return muliply;
};
private static Function<Integer, Integer> divideNSumAll = n -> {
int sum = 0;
for (int i = 10; i < n; i++) {
sum += divideNMultiply.apply(i);
}
return sum;
};
public static void main(String[] args) {
System.out.println(divideNSumAll.apply(1000));
}
}
파이썬 코드입니다. 제대로 돌아가는지 확인하기 위해서 n을 입력받아 10부터 n까지의 답을 구하는 코드로 짰습니다.
'''
ex: 10 to 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
so, ans = 0+1+2+3+4+5 = 15
now, how about 10 to n?
'''
n=0
while n<10:
n = int(input("To what? "))
target = [x for x in range(11,n+1)] #10 = 1*0 = 0, no matter the ans.
tmp = 0
for i in target:
a = 1
for j in str(i):
a *= int(j)
tmp += a
print(tmp)
파이썬 초보입니다. 많은 피드백 부탁드립니다!
static void main(string[] args)
{
int allresult = 0;
string text = onsle.ReadLine();
int fnumber = text.Split('~')[0];
int snumber = text.Split('~')[1];
for(int i = fnumber; i<=snumber;i++)
{
int result = 1
string[] s = fnumber.ToChar();
if(s.Contain("0"))
{
result = 0;
countinue;
}
foreach(string st in s)
{
result *= int.Parse(st);
}
allresult += result;
}
Console.WriteLine(allresult);
}
#include <stdio.h>
#include <string.h>
namespace std {
inline char* to_string(int value) {
static char buffer[4] = {0};
sprintf(buffer, "%4d", value);
return buffer;
}
};
int main() {
int sum = 0;
char* string = NULL;
for (int i=10; i<=1000; i++) {
string = std::to_string(i);
int val1 = string[0]-48;
int val2 = string[1]-48;
int val3 = string[2]-48;
int val4 = string[3]-48;
sum += (val1<0?1:val1) * (val2<0?1:val2) * (val3<0?1:val3) * (val4<0?1:val4);
}
printf("the sum (10 to 1000) is %d\n", sum);
}
[OUTPUT]
the sum (10 to 1000) is 93150
public class Main {
public static void main(String[] args) {
int total = 0;
for (Integer i = 10; i <= 1000; i++) {
char[] mul = i.toString().toCharArray();
int result = 1;
for (char c : mul) {
result *= (int) (c - '0');
}
total +=result;
}
System.out.println("result : "+total);
}
}
#include <stdio.h>
void mulSum(int start, int end);
int main()
{
int start, end;
printf(" 범위 : ");
scanf("%d %d",&start, &end);
mulSum(start, end);
}
void mulSum(int start, int end)
{
int num[10] = {0};
int sum = 0;
int mul = 1;
for(int i=start; i<=end; i++)
{
mul = 1;
if (i == 1000) {
sum += 0;
}
else if(i >= 100 && i<=999) {
mul *= i/100;
mul *= (i%100)/10;
mul *= i%10;
sum += mul;
}
else if(i>=10 && i<=99) {
mul *= i/10;
mul *= i%10;
sum += mul;
}
}
printf ("%d ",sum);
}
package test002;
public class Practice {
protected int getLengthOverTen(int num) {
if (num < 10) {
return 0;
}
return (int) Math.log10(num) + 1;
}
protected int getMultiplyNumber(int num) {
int length = getLengthOverTen(num);
if (length <= 1) {
return 0;
}
int result = 1;
for (int i = 0; i < length; i++) {
result *= (num % 10);
num /= 10;
}
return result;
}
public int getSumAllResult(int lowNum, int highNum) {
int result = 0;
for (int i = lowNum; i <= highNum; i++) {
result += getMultiplyNumber(i);
}
return result;
}
public static void main(String[] args) {
int result = new Practice().getSumAllResult(10, 1000);
System.out.println("result:" + result);
}
}
result:93150
#python 3.5
result = []
for i in range(10, 1001):
for j in range(len(str(i))):
if len(str(i)) == 2:
mul1 = int(str(i)[j-1]) * int(str(i)[j-2])
result.append(mul1)
else:
mul2 = int(str(i)[j-1]) * int(str(i)[j-2]) * int(str(i)[j-3])
result.append(mul2)
sum(result)
안녕하세요. C++로 풀어봤습니다.
#include<iostream>
using namespace std;
void main()
{
cout<<"Hello Stranger??"<<endl;
int totalSum =0;
for(int i=10; i<=1000; i++)
{
int num = i;
int sum = 1;
while(true)
{
int val = num%10;
sum *= val;
num = num/10;
if( num==0 )
break;
}
totalSum += sum;
}
cout<<totalSum<<endl;
}
93150
def dis_sum(n,m):
result1 = []
for num in range(n,m+1):
factor = list(str(num))
m = 1
for i in factor:
i_fac = int(i)
m = m*i_fac
result1.append(m)
result2 = 0
for s in result1:
result2 = result2 + s
return result2
sum = 0
for i in range(10,1001):
j = len(str(i))
mul = 1
temp = i
for k in range(1,j+1):
mul = mul*(temp%10)
temp = temp/10
sum = sum + mul
print sum
#include <iostream>
using namespace std;
int main ()
{
int MaxNum = 1000;
int tempNum = 0;
int counter = 0;
int sum = 0;
for (counter = MaxNum; counter > 9; counter--) {
tempNum = counter;
if ((tempNum / 1000) > 0)
sum += (tempNum / 1000) * ((tempNum % 1000) / 100) * ((tempNum % 100) / 10) * (tempNum % 10);
else if ((tempNum / 100) > 0)
sum += ((tempNum % 1000) / 100) * ((tempNum % 100) / 10) * (tempNum % 10);
else if ((tempNum / 10) > 0)
sum += ((tempNum % 100) / 10) * (tempNum % 10);
}
cout << "합 : " << sum << endl;
return 0;
}
public static void main(String[] args) {
int total = 0;
for(int i = 10; i <= 1000; i++) {
int quotient = i / 10; //몫
int remainder = i % 10; //나머지
if(quotient < 10) {
total += quotient * remainder;
}
else if(quotient >= 10 && quotient < 100) {
int quotient2 = quotient / 10;
int remainder2 = quotient % 10;
total += quotient2 * remainder2 * remainder;
}
}
System.out.println(total);
}
def MulSum(a,b):
total = 0
for x in range(a,b+1):
mul_list = list(str(x))
multi = 1
multot = 0
for y in mul_list:
multi *= int(y)
multot += multi
total += multot
return total
m=10
n=1000
print(MulSum(m,n))
답은 93150 이네요
#include <iostream>
using namespace std;
int main(void)
{
int sum = 0;
int mul = 1;
int j;
for (int i = 10; i <= 1000; i++)
{
j = i;
while (j / 10 != 0)
{
mul = mul * (j % 10);
j = j / 10;
}
mul = mul * j;
sum = sum + mul;
mul = 1;
}
cout << "합은 : " << sum << "입니다." << endl;
}
public static void productSum(int MIN_RANGE, int MAX_RANGE){
int totalSum = 0;
System.out.println("Start");
for(int num = MIN_RANGE; num < MAX_RANGE +1; num++){
String strNum = String.valueOf(num);
if(!strNum.contains("0")){
int product = 1;
for(int i = 0; i < strNum.length(); i++){
product *= Integer.parseInt(strNum.charAt(i)+"");
}
totalSum+=product;
}
}
System.out.println("Sum : "+totalSum);
}
s_list = []
for i in range(10,1001):
s = 1
for digit in str(i):
s *= int(digit)
s_list.append(s)
print sum(s_list)
public static void main(String[] args) {
int sum=0;
for(int i=10;i<=1000;i++){
Integer temp=i;
int tmp=1;
String str[]=temp.toString().split("");
for(int j=0;j<str.length;j++){
tmp*=Integer.parseInt(str[j]);
}sum+=tmp;
System.out.println(i+":"+tmp);
}System.out.println("sum :"+sum);
}
mult_sum = 0
for i in range(10, 1001):
mult = 1
for digit in str(i):
mult *= int(digit)
mult_sum += mult
print(mult_sum)
def multi(list):
total = 1
for i in list:
total *= i
return total
print(sum([multi([int(i) for i in str(x)]) for x in range(10, 1001)]))
또는
sum([eval("*".join(str(x))) for x in range(10, 1001)])
Python 3.5.2
public static void main(String[] args) {
int nResult = 0;
for(int i = 10 ; i < 1000; i++){
int item = i;
int multiVlaue = 1;
do{
multiVlaue *= item%10;
item = (item / 10);
}
while(item > 0);
nResult += multiVlaue;
}
System.out.println(nResult);
}
int Ans = 0;
for(int i = 10;i<=1000;i++)
{
Char[] C = i.ToString().ToCharArray();
if (!C.Contains(Char.Parse("0")))
{
int MU = 1;
for (int j = 0; j < C.Length; j++)
{
MU *= int.Parse(C[j].ToString());
}
Ans += MU;
}
}
Console.WriteLine(Ans);
c#
multi=[]
for num in range(10, 1001):
str_num=[]
for x in str(num):
str_num.append(x)
str_num = '*'.join(str_num)
multi.append(eval(str_num))
print sum(multi)
void main() { int i; int sum = 0;
for (i = 10; i <= 1000; i++) {
int mul = -1;
int d = i;
while(1) {
if (mul == -1) mul = d%10;
else mul *= d%10;
d = d/10;
if (d == 0) break;
}
sum += mul;
}
printf("%d\n", sum);
}
자바
public class NumTest2 {
public int getSumResult(char[] num) {
int result = 1;
for(int i = 0, size = num.length; i < size; i++) {
result *= (num[i] - 48);
}
return result;
}
public int result(int num1, int num2) {
int result = 0;
for(int i = num1; i <= num2; i++) {
result += this.getSumResult(String.valueOf(i).toCharArray());
}
return result;
}
public static void main(String[] args) {
System.out.println(new NumTest2().result(10, 1000));
}
}
// 답 : 93150
# 10 scale
sum_10scale = 0
result_10scale = []
for a in range (1, 10):
for b in range (0, 10):
c = a*b
result_10scale.append(c)
sum_10scale = sum_10scale + c
print (result_10scale)
print 'Sum of 10 to 99 = ', sum_10scale
print (len(result_10scale))
# 100 scale
sum_100scale = 0
result_100scale = []
for a in range (1, 10):
for b in range (0, 10):
for c in range (0, 10):
d = a*b*c
result_100scale.append(d)
sum_100scale = sum_100scale + d
print (result_100scale)
print 'Sum of 100 to 999 = ', sum_100scale
print (len(result_100scale))
print 'Sum of 10 to 999 = ', sum_100scale, '+', sum_10scale, '=', sum_100scale+sum_10scale
print (len(result_10scale+result_100scale))
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
for(int i=10; i<=1000; i++){
int num = i;
int mul = 1;
while(num!=0){
mul *= (num%10);
num /= 10;
}
sum += mul;
}
System.out.println(sum);
}
}
public class DivdeAndMulti { static int MAX_NUM = 1000;
public static void main(String[] args) {
int sum = 0;
int multi =1;
for (int i =10; i<= MAX_NUM; i++){
String temp = String.valueOf(i);
multi = 1;
for(int j = 0; j < temp.length(); j++){
multi *= Integer.valueOf(String.valueOf(temp.charAt(j)));
}
sum += multi;
}
System.out.println(sum);
}
}
reduce 구문 연습할 겸, 한 줄로 해보았습니다.
from functools import reduce
print(reduce(lambda a, b: a+reduce(lambda x,y : int(x)*int(y),str(b)), range(10,1001),0))
아래의 코드는 여러 줄로 한 정석적인 답안입니다.
def sumofmultiply(x):
multiply=1
for char in str(x):
multiply*=int(char)
return multiply
if __name__ == "__main__":
sum=0
for x in range(10, 1001):
sum+=sumofmultiply(x)
print(sum)
#include<stdio.h>
#define MAX 1000
int main(void)
{
int i,sum=0;
int a,b,c,d[MAX];
for(i=10;i<MAX;i++)
{
if(i<100)
{ a=i%10;
b=i/10;
d[i-10]=a*b;}
else
{ a=i%10;
b=i/10;
c=i/100;
d[i-10]=a*b*c;
}}
for(i=0;i<MAX-10; i++)
sum+=d[i];
printf("10부터 1000까지 합은 %d입니다.\n",sum);
return 0;
}
#include<iostream>
using namespace std;
void main()
{
int max, min, mutl;
int X, Y = 0;
int sum[10][2] = {};
int mutl_result = 0;
cout << "최소 숫자를 입력하세요 :";
cin >> min;
cout << "최대 숫자를 입력하세요 :";
cin >> max;
for (int i = 0; i < 10; i++)
sum[i][0] += i;
//최소수부터 최대수까지 계산을 시작
for (min; min <= max; min++)
{
mutl = 1;
X = min; // 몫
Y = X % 10; // 나머지
while (X != 0) {
for (int i = 0; i < 10; i++) {
if (sum[i][0] == Y)
sum[i][1] += 1;
}
mutl *= Y;
X = X / 10;
Y = X % 10;
}
mutl_result += mutl;
}
cout << "총 계산 값은 :" << mutl_result << endl;
}
#python 2.7xx
#파이썬은 사랑입니다
from operator import mul
sum(reduce(mul,( int(y) for y in str(x) )) for x in range(10,1000))
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
int main(void) { int number[990]; int sum1 = 0; for (int i = 10; i < 1000; i++) { int num[4] = { 1, 1, 1, 1 }; int k = 0; int s = i; while (1) { num[k] = s % 10; if (s / 10 >= 1) { s = s / 10; k++; } else { int sum = 1; for (int j = 0; j < 4; j++) { sum *= num[j]; } number[i - 10] = sum; break; } } } for (int i = 0; i < 990; i++) { sum1 += number[i]; } printf("%d", sum1); return 0; }
int result = 0;
var stack = new Stack<int>();
for (int i = 10; i <= 1000; i++)
{
int temp = i;
while (temp != 0)
{
stack.Push(temp % 10);
temp /= 10;
}
int mul = stack.Pop();
while(stack.Count != 0)
{
mul *= stack.Pop();
}
result += mul;
}
Console.WriteLine($"result : {result}");
분해해서 스택에 넣고 넣은값끼리 곱하고 마지막에 더하기
var sum = 0;
for(var i = 10;i<=15;i++){
var num = i;
var mul = 1;
while(num>0){
mul *= num%10;
num = parseInt(num/10);
}
sum += mul;
}
console.log(sum);
num = [] for i in range(10,1000+1): s = list(str(i)) s = '*'.join(s) num.append(eval(s)) print(sum(num))
#include <stdio.h>
void main()
{
int Cnt = 0;
int Cnt2 = 0;
int Mul = 1;
int Sum = 0;
for ( int i = 10; i <= 1000; i++ )
{
Cnt2 = i;
Cnt = i;
do {
Cnt = Cnt2 % 10;
Mul *= Cnt;
Cnt2 = Cnt2 / 10;
} while ( Cnt2 != 0 );
Sum += Mul;
Mul = 1;
}
printf("%d", Sum);
}
#include <stdio.h>
#pragma warning(disable:4996)
int main(void) {
int n;
int sum = 0;
scanf("%d", &n);
for (int i = 10; i <= n; i++) {
int k = i;
int tmp_sum = k%10;
k = k / 10;
while (k > 0) {
tmp_sum *= k % 10;
k /= 10;
}
sum += tmp_sum;
}
printf("%d", sum);
}
import java.util.Scanner;
class NumAccum{
int startNum;//starting number
int endNum;//ending number
public NumAccum() {
}
public void setNum(int s,int e){
this.startNum = s;
this.endNum = e;
}
private int divideNum(int num){
int result = 1;//for comMultiple
while(num != 0){
result *= num%10;
num = num/10; //separate numbers.
}
return result;
}
public void calc(){
int sum=0;//for accumulate sum
for(int i=this.startNum;i<=this.endNum;i++)
sum += divideNum(i);//add divided numbers to 'sum'
System.out.println(sum);
}
}
public class test5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
NumAccum num = new NumAccum();
int num1 = sc.nextInt();
int num2 = sc.nextInt();
num.setNum(num1, num2);
num.calc();
}
}
#include <stdio.h>
#include <stdlib.h>
void main()
{
int arr1[1000];
int mok, nam, num1, gop = 1, sum = 0;
printf("10이상 마지막 수 입력 : ");
scanf_s("%d", &num1);
for (int i = 0; i < 1000; i++) // 배열 0으로 초기화
{
arr1[i] = NULL;
}
for (int i = 10; i <= num1; i++)
{
mok = i / 10;
nam = i % 10;
gop = gop * nam;
while (mok > 9) // 몫이 10보다 크면 계속 나누기
{
mok = mok / 10;
nam = mok % 10;
gop = gop * nam;
}
gop = gop * mok;
arr1[i-10] = gop;
gop = 1;
}
for (int i = 0; i <= num1; i++)
{
if(arr1[i] != NULL)
sum += arr1[i];
}
printf("%d ", sum);
}
// C++
int Sum( int nMin, int nMax )
{
int nSum = 0;
int nMulty = 0;
int nRivision = 0;
for( int x = nMin ; x <= nMax ; ++x )
{
nMulty = 1;
nRivision = x;
while( nRivision > 0 )
{
nMulty *= nRivision % 10;
nRivision /= 10;
}
nSum += nMulty;
}
return nSum;
}
int main()
{
cout << Sum( 10, 1000 );
return 0;
}
static int sum = 0;
static int start = 10;
static int end = 1000;
public static void main(String[] args) {
for (int i = start; i <= end; i++) {
sum += numberSplitMutiple(i);
}
System.out.println("sum = " + sum);
}
private static int numberSplitMutiple(int number) {
int r = number % 10;
if (r == 0 || number >= 10) {
r *= numberSplitMutiple(number / 10);
}
return r;
}
sum = 93150
def prod(n):
result=[]
while n>0:
result+=[n%10]
n=n//10
re=1
for i in result:
re*=re*i
return re
def summ(a,b):
print(sum(prod(y) for y in range(a,b+1) ))
summ(10,1000)
def multsum(number):
Sum = 0
for i in range(10,number+1):
X = 1
for j in str(i):
X = X*int(j)
Sum += X
return Sum
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.stream.IntStream;
public class FromTo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> numbers = new ArrayList<>();
IntStream.range(sc.nextInt(), sc.nextInt()+1).forEach(
i -> numbers.add(Arrays.asList(String.valueOf(i).split("")).stream().map(j -> (Integer.valueOf(j))).reduce(1, (a, b) -> a * b)));
System.out.println(numbers.stream().mapToInt(Number::intValue).sum());
}
}
/*
dev : peanutBro
date : 170216
content : 10~1000까지 각 숫자 분해하여 곱하기의 전체 합 구하기
*/
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(void)
{
int addNumber = 0;
for (int i = 10; i < 1000; i++)
{
int multiplyNumber = 1;
char* numberString = new char[4];
_itoa(i, numberString, 10);
for (int j = 0; j < strlen(numberString); j++)
{
multiplyNumber *= (numberString[j]-'0');
}
addNumber += multiplyNumber;
}
cout << addNumber << endl;
}
total = 0
mid_total = 1
for number in range(10,1001):
num_str = str(number)
for num in num_str:
mid_total *= int(num)
total += mid_total
mid_total = 1
print(total)
import operator, functools
n = 15
sum = 0
for i in range(10, n + 1):
sum += functools.reduce(operator.mul, (int(j) for j in str(i)), 1)
print sum
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char buffer[5] = "";
int sum = 0;
for (int i = 10; i <= 1000; i++) {
_itoa_s(i, buffer, 10);
int length = strlen(buffer);
int temp = 1;
for (int i = 0; i < length; i++) {
temp *= buffer[i] - '0';
}
sum += temp;
}
cout << "sum : " << sum << endl;
return 0;
}
c++로 풀었습니다
python 3.5.2
answer is 93150
answer=0
for i in range(10,1001) :
part = 1
for j in str(i) :
part *= int(j)
answer += part
print(answer)
var allSum = 0;
for(var i=10; i <= 1000; i++){
var numSum = 1;
var num = i;
while(num > 0){
numSum = numSum * (num % 10);
num = parseInt(num / 10);
}
allSum += numSum;
}
console.log(allSum)
mult = []
for x in range(10, 1001):
result = 1
for y in str(x):
result *= int(y)
mult.append(result)
print sum(mult)
ans = 0
for i in range(10,1000):
j = i
tmpans = 1
while (j!=0):
tmp = j % 10
j /= 10
tmpans *= tmp
ans += tmpans
print(ans)
sum_total = 0
for i in range(10,1001):
total = 1
for j in str(i):
total *= int(j)
sum_total += total
print(sum_total)
와.. eval 과 join 은 정말... 멋있네요 보통의 코드 하나 더 올립니다.
```{.python}
result = 0 for i in range(10, 1001): m = 1 for j in str(i): m = m * int(j) result+=m
print(result) '''
파이썬 3.5.3으로 작성하였습니다.
sum = 1
result = 0
for x in range(10,1001):
for y in str(x):
sum *= int(y)
result += sum
sum = 1
print(result)
public void go() {
int [] num = {1,1,1,1};
int sum=0;
for(int i=10 ; i<=1000 ; i++) {
num[0]= (i%10);
num[1]= (i%1000%100/10);
if(i>=100) num[2]= (i%1000/100);
if(i==1000) num[3]= (i/1000);
sum = sum + (num[0]*num[1]*num[2]*num[3]);
}
System.out.print(sum);
}
#include <stdio.h>
int digitmul(int num)
{
int result = 1;
while(num != 0)
{
result *= num % 10;
num /= 10;
}
return result;
}
int main(void)
{
int i;
int sum = 0;
for (i=10; i<1001; i++)
{
sum += digitmul(i);
}
printf("%d\n", sum);
return 0;
}
파이썬 3.6.0으로 풀었습니다.
b = 0
for i in range(10, 17):
a = 1
for j in str(i):
a = a * int(j)
b += a
print(b)
using namespace std;
using namespace std;
int main() { int numsector, numsum = 0;
for (int i = 10; i < 1000; i++)
{
numsector = 1;
for (int ws = i;;)
{
numsector *= ws % 10;
if (ws < 10) break;
ws /= 10;
}
numsum += numsector;
}
cout << numsum << endl;
}
Python 3.6.0 입니다. 93150 나오네요.
sum=0
for n in range(10,1000+1):
str_n=str(n)
mul=1
for p in range(0,len(str_n)):
mul*=int(str_n[p])
sum+=mul
print(sum)
#include <stdio.h>
void main() {
int i, temp, min=10, max=1000, sum=0, gob;
for (i = min; i <= max; i++) {
temp = i;
gob = 1;
while (temp) {
gob *= temp % 10;
temp /= 10;
}
sum += gob;
}
printf("총 합 : %d\n", sum);
}
package codingdojang;
public class numberDeviceAndM {
public static void main(String args[]){
int sum=0;
for(int i=10;i<=1000;i++){
int result=i,mul=1;
for(;result>0;){
mul*=result%10;
result/=10;
}
sum+=mul;
// System.out.println(mul);
}
System.out.println(sum);
}
}
'''level 1
10~1000까지 각 숫자 분해하여 곱하기의 전체 합 구하기'''
from functools import reduce
def helper(num):
mul = lambda x, y: x * y
return reduce(mul, map(int, str(num)))
def main(pre, post):
return sum(map(helper, range(pre, post+1)))
if __name__ == '__main__':
pre, post = 10 ,1001
res = main(pre, post)
print(res)
package training;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;
public class SplitSum {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.print("Please insert FIRST Number? ");
int iNum1 = sc.nextInt();
System.out.print("Please insert SECOND Number? ");
int iNum2 = sc.nextInt();
int iSum = 0;
for(int i=iNum1; i<=iNum2; i++){
iSum =+ spritNum(i);
}
System.out.println("'"+iNum1+"' ~ '" + iNum2 + "' ==> " + iSum);
}
public static int spritNum(int iNum) {
String strNum = String.valueOf(iNum);
int[] iArr = new int[strNum.length()];
int iRtn = 1;
for(int i=0;i<strNum.length();i++){
iArr[i] = Integer.parseInt(strNum.substring(i, i+1));
}
for(int i=0;i<iArr.length;i++){
iRtn = iRtn * iArr[i];
}
return iRtn;
}
}
def mul(x):
t=1
for i in range(len(str(x))):
t = t * int(str(x)[i])
return t
total=0
for i in range(10,1001):
m=mul(i)
total=total+m
print(total)
result = 0
for x in range(10, 1001):
mul = 1
for y in str(x):
mul *= int(y)
result += mul
print(result)
def num_list(num):
num_list1 = []
num_list2 = []
i = 9
while i < num:
i += 1
if 10 <= i:
a = str(i)
num_list1.append(int(a[0])*int(a[1]))
if 100 <= i:
a = str(i)
num_list1.append(int(a[0])*int(a[1])*int(a[2]))
if 1000 <= i:
a = str(i)
num_list1.append(int(a[0])*int(a[1])*int(a[2])*int(a[3]))
return print (sum(num_list1))
num_list(int(input("숫자를입력해주세요")))
파이썬초보가 파이썬3로 10부터 입력받은숫자까지 구하는걸로 만들어봤습니다. 한두줄에 작성하시는 고수님들보면..존경스럽네요
int sum = 0;
for(int i=10; i<=1000; i++){
int mul = 1;
for(char c : String.valueOf(i).toCharArray()){
mul = mul * (c - '0');
}
sum = sum + mul;
}
System.out.println(sum);
total = 0
for i in range(10, 1001):
if i<100:
total += (i//10) * (i%10)
elif i>100 and i<1000:
total += (i//100) * ((i%100)//10) * (i%10)
else:
total += (i//1000) * ((i%1000)//100) * ((i%100)//10) * (i%10)
print(total)
나눗셈 후 소수점 아랫자리를 버리는 //연산자와 나머지를 반환하는 %연산자를 활용했습니다. 정답은 93150입니다.
a=0
b=0
c=0
for x in range(10,1001):
if x <= 100:
y = (x//10)*(x%10)
a+=y
if x >= 100 and x<1000:
y = (x//100)*((x%100-x%10)//10)*(x%10)
b+=y
else:
y = (x//1000)*((x%1000-x%100-x%10)//100)*((x%100-x%10)//10)*(x%10)
c+=y
y=a+b+c
print(y)
c언어로 해보았습니다.```{.cpp}
void main() { int num = 10; int cut = 0, cut_2 = 0; int remain = 0, remain_2 = 0; int res = 0; int mul = 0;
for (num = 10; num <= 1000; num++)
{
if (num >= 10 && num <= 99)
{
cut = num / 10;
remain = num % 10;
res += cut * remain;
}
if (num >= 100 && num <= 999)
{
cut = num / 100;
remain = num % 100;
cut_2 = remain / 10;
remain_2 = remain % 10;
res += cut * cut_2 * remain_2;
}
}
printf("모든 곱의 합은: %d\n", res);
} ```
#3.py
def prod(a,b):
result = []
for nums in range(a,b+1):
xs = 1
for x in list(str(nums)) : xs *= int(x)
result.append(xs)
return sum(result)
print(prod(10,15))
result = 1
total = 0
for number in range(10,1001):
for n in str(number):
result = result*int(n)
total += result
result = 1
print(total)
#include <stdio.h>
#include <string.h>
int main(void)
{
int i;
int j;
int len;
int temp;
int sum = 0;
char str[8] = {0, };
for (i = 10; i <= 1000; i++)
{
snprintf(str, sizeof(str), "%d", i);
len = strlen(str);
temp = 1;
for (j = 0; j < len; j++)
temp *= (str[j] - '0');
sum += temp;
}
printf("%d\n", sum);
return 0;
}
c언어로 구현 했습니다. char배열로 처리 해서 자릿수별로 곱한 후 sum에 더해주는 방식으로 풀었어요~
python 3.4.2 수의 곱을 구하는 것을 함수로
def mul_fn(n):
mul = 1
for i in str(n):
num = int(i)
mul *= num
return mul
sum = 0
for x in range(10,1001):
sum += mul_fn(x)
print(sum)
결과는 pi@raspberrypi:~/example $ python3 sum_mul_num.py 93150
#include <iostream>
#include <string.h>
using namespace std;
int main( int argc , char** argv )
{
char temp[ 24 ];
int start = 10;
int end = 1000;
int result = 0;
for( int i = start ; i <= end ; ++i )
{
int mul = 1;
snprintf( temp , sizeof( temp ) , "%d" , i );
for( size_t j = 0 ; j < strlen( temp ) ; ++j )
{
mul *= ( temp[ j ] - 48 );
}
result += mul;
}
cout << result << endl;
}
# 1. for와 n in range(1, N+1)을 이용해서 하나씩 숫자를 늘려간다.
#
# 2.1 n을 각각의 숫자로 분해한다. list(str)하면 string을 각자의 character로 분리한다.
# 2.2 각각의 character를 integer 형으로 변환한 다음 곱한다.
# map 함수를 쓰면 편하게 할 수 있다.
# list(map(int, character_list)) <- 이러면 character_list에 포함된 각각의 element에
# int()를 적용하고 그 결과를 새로운 list로 리턴한다.
# 2.3 최종 결과에 2.2의 결과로 나온 list를 곱하여 누적하면 된다.
N = 1000
result_total = 0
for n in range(10, N+1):
char_list = list(str(n)) # 2.1
int_list = list(map(int, char_list)) # 2.2
result_multiplication = 1 # 2.3 시작
for i in range(0, len(int_list)):
result_multiplication = result_multiplication * int_list[i]
result_total = result_total + result_multiplication # 2.3 끝
print(result_total)
결과값 : 93150
mul=1
list=[]
for i in range(10,1001):
for a in str(i):
mul=mul*int(a)
if mul==0:
mul=1
elif mul!=0:
list.append(mul)
mul=1
print(sum(list))
문제가 10 ~ 1000 까지의 각 자리 수를 분해한 숫자 간의 곱하기 전체 합입니다만, X(최솟 값)에서 Y(최대 값)까지의 임의의 숫자를 받고 정답을 출력하는 코드를 만들어 봤습니다. 저도 워낙 힘들 게 만들었던 터라.. 정리되지 못한 점이 많지만 참고하실 분들은 참조하시기 바랍니다.
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int minNum;
int maxNum;
boolean runner = true;
int leftNum;
int countNum = 0;
int[] divideNum = new int[10000000];
int sumDivide = 1;
int sumValue = 0;
System.out.print("최소 값(10 이상) > ");
minNum = scanner.nextInt();
if(minNum < 10) {
System.out.println("최소 값은 '10' 이상의 자연수여야 합니다.");
return;
}
System.out.print("최대 값 > ");
maxNum = scanner.nextInt();
if(minNum >= maxNum) {
System.out.println("최소 값이 최대 값 보다 크거나 같을 수 없습니다.");
return;
}
System.out.println("[ 최소 값에서 최대 값까지 각 숫자 자리 수를 분해한 각 숫자 간의 곱하기의 전체 합 ]");
for(int start = minNum; start < maxNum; start++) {
leftNum = start;
countNum = 0;
sumDivide = 1;
while(runner) {
if(leftNum >= 10) {
divideNum[(countNum+=1)] = leftNum % 10;
leftNum /= 10;
} else {
divideNum[(countNum+=1)] = leftNum;
break;
}
}
for(int b = 1; b <= countNum; b++) {
sumDivide *= divideNum[(b)];
}
sumValue += sumDivide;
}
System.out.println(minNum +" ~ " +maxNum +"까지의 합 > " +sumValue);
}
num=int(input("num:"))
total=0
for i in range(10,num+1):
if 10<=i<100:
total+=(i//10)*(i%10)
elif 100<=i<1000:
total+=(i//100)*((i%100)//10)*((i%100)%10)
elif i==1000:
total+=1
print(total)
import java.util.*;
public class DiviByNum{
public static void main(String[] args){
long result = 0;
for(long i=10;i<=1000;i++){
String S=""+i;
result+=divisum(S);
}
System.out.println(result);
}
public static long divisum(String S){
int numlength=S.length();
long result=1;
for(int i=0;i<numlength;i++){
result*=Character.getNumericValue(S.charAt(i));
}
return result;
}
}
sum = 0
for i in range(10,1001):
product = 1
for j in str(i):
product = product * int(j)
sum += product
#include<stdio.h>
int main() {
int number[] = { 0,0,0,1 };
int k, i, j, q, sum = 0, mul;
for (i = 0; i < 1000; i++) {
for (q = 0; q < 4; q++) {
if (number[q] > 0) {
break;
}
}
mul = 1;
for (j = 3; j >= q; j--) {
mul *= number[j];
}
sum += mul;
number[3]++;
for (k = 3; k > 0; k--) {
if (number[k] == 10) {
number[k - 1]++;
number[k] = 0;
}
else {
break;
}
}
}
printf("%d", sum);
return 0;
}
# set digits
x = 10
y = 1000
#define each number's product(gets 'int' as input)
def product(n):
product = 1
for a in str(n):
product = product * int(a)
return product
#get answer
sum = 0
for digit in range(x,y+1):
sum = sum + product(digit)
print (sum)
public class practice {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int y = sc.nextInt();
int[] p= new int[4];
int result1= 0;
for(;x<=y; x++){
int result = 1;
int j=0;
for(int i=x ; i>0; i=i/10, j++){
p[j] = i%10;
}
for(int i=0; i<j-1; i++){
result *= p[i];
}
result1 +=result;
}
System.out.println(result1);
}
}
파이썬으로 풀어보았습니다```{.python}
sum=0 temp=0
for i in range(10,1001): word = str(i) for j in range(len(word)): if j==0: temp=int(word[j]) else : temp=temp*int(word[j]) sum=sum+temp print("sum : %d\n" %sum)
```
# coding = utf-8
i = 10
sum = 0
while i <= 1000 :
x = 1
i_str = str(i)
for j in i_str :
i_int = int(j)
x = x * i_int
i += 1
sum += x
print(sum)
num=int(input("숫자를 입력하시요: "))
list_num=list()
total=0
if 10<=num<100:
for i in range(10,num+1):
list_num=list(str(i))
total+=int(list_num[0])*int(list_num[1])
if 100<=num<1000:
for x in range(10,100):
list_num=list(str(x))
total+=int(list_num[0])*int(list_num[1])
for i in range(100,num+1):
list_num=list(str(i))
total+=int(list_num[0])*int(list_num[1])*int(list_num[2])
if num==1000:
for x in range(10,100):
list_num=list(str(x))
total+=int(list_num[0])*int(list_num[1])
for i in range(100,num+1):
list_num=list(str(i))
total+=int(list_num[0])*int(list_num[1])*int(list_num[2])
total+=0
print(total)
JAVA로 풀었습니다.
public class test {
public static void main(String[] args) {
String st;
int result=1, sum=0;
for(int i=10; i<=1000; i++){
st=String.valueOf(i);
result = 1;
for(int j=0; j<st.length(); j++){
result *=(int)st.charAt(j)-48;
}
sum += result;
}
System.out.println(sum);
}
}
(C언어로 작성)
#include <stdio.h>
void main()
{
int i, digit1, digit2, digit3, multi, totalSum=0;
for (i = 10; i <= 99; i++)
{
digit2 = i / 10;
digit1 = i - (digit2 * 10);
multi = digit1*digit2;
totalSum += multi;
}
for (i = 100; i <= 999; i++)
{
digit3 = i / 100;
digit2 = (i - (digit3 * 100)) / 10;
digit1 = i - (digit3 * 100) - (digit2 * 10);
multi = digit1*digit2*digit3;
totalSum += multi;
}
printf("전체 합 : %d\n", totalSum);
}
def check(startIdx, endIdx):
value = 0
for i in range(startIdx, endIdx + 1):
multiple = 1
for j in str(i):
multiple *= int(j)
value += multiple
return value
startIdx = 10
endIdx = 1000
result = check(startIdx, endIdx)
print(result)
sum = 0
for a in range(10,1001):
b = list (str(a))
c = 1
#print (b)
for i in range(1,len(b)+1):
c = c * int(b[i-1])
#print (c)
sum = sum + c
print ("10~1000까지 각 숫자 분해하여 곱하기 : %d" %sum)
sum = 0
for i in range(10, 1001):
product = 1
for j in str(i):
product *= int(j)
sum += product
print(sum)
sum = 0
for i in range(10,1001):
multiple = 1
for j in range(len(str(i))):
multiple *= int(str(i)[j])
sum += multiple
print(sum)
package 연습; import java.util.Scanner; //10부터 1000까지 public class insubunhae {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num;
int save[] = new int[4];
System.out.print("정수 입력 >>");
num =sc.nextInt();
if(num<=99){
save[0]=num%10;
save[1]=(num-save[0])/10;
save[2]=save[1]*save[0];
System.out.printf("%d =%d * %d = %d",num,save[1],save[0],save[2]);
}
else if(num<=999){
save[0]=num%10;
save[1]=(num-save[0]-((num/100)*100))/10;
save[2]=num/100;
save[3]=save[0]*save[1]*save[2];
System.out.printf("%d =%d * %d * %d = %d",num,save[2],save[1],save[0],save[3]);
}
}
}
#include<stdio.h>
int main(){
int min, max, gop = 1, hap = 0, count, backup; //gop은 곱셈의 항등원인 1로 초기화 해줬습니다.
printf("낮은값을 입력하세요 : ");
scanf("%d", &min);
printf("높은값을 입력하세요 : ");
scanf("%d", &max); //10~1000으로 주어졌지만 다른 수도 가능하게 입력 받도록 하였습니다. 한자리수도 됩니다.
count = min;
backup = min;
while (count <= max)
// for(backup=min; backup<=max; backup++)을 사용하니 continue때마다 증감식(backup++) 작동돼서 while문 사용
{
gop *= count % 10; //끝자리수 곱하기
if (count >= 10){ //10이상이면
count /= 10; //끝자리 삭제과정 (예 : 325 -> 1*5 하였으므로 5삭제후 32만듬)
continue; // 끝자리수 곱하기로 돌아가기
}
hap += gop; //곱한수 더하기
gop = 1; //항등원으로 초기화
backup++;
count = backup; //첫자리만 남았으므로 복원해줍니다.
}
printf("각 숫자 분해하여 곱한값의 총합 : %d", hap);
}
c로 풀이.
#include <stdio.h>
int main(void)
{
int i,j,multi,sum=0;
for(i=10;i<=1000;i++)
{
multi=1;
for(j=1;j<=1000;j*=10) if(i>=j) multi*=((i/j)%10);
sum+=multi;
}
printf("%d",sum);
return 0;
}
#include <iostream>
using namespace std;
int main() {
int i,sum = 0;
for (int i = 10; i < 1001; i++) {
if (i > 999) {
sum += (i / 1000) * ((i % 1000) / 100) * ((i % 100) / 10) * (i % 10);
}
else if (i > 99 && i < 1000) {
sum += (i / 100) * ((i % 100) / 10) * (i % 10);
}
else if (i > 9 && i < 100) {
sum += (i / 10) * (i % 10);
}
}
cout << sum << endl;
}
결과 : 93150
public static void main(String[] args) {
int value1= 0;
int sum1=0;
int value2= 0;
int sum2=0;
for(int i =10 ; i<100 ; i++){
value1 = (i%10) * ((i/10)%10);
sum1 +=value1;
}
for(int i =10 ; i<1000 ; i++){
value2 = (i%10) * ((i/10)%10)* (i/100);
sum2 +=value2;
}
System.out.println(sum1 + sum2 );
}
정답은 93150
let su = 1;
let temp = 1;
let sum = 0;
let hab = (first,end) => {
for(first; first <= end; first++){
do{
su*=10;
var num = (((first%su)+'').charAt(0))*1;
temp *= num;
}while(first >= su);
su = 1;
sum = sum + temp;
temp = 1;
}
return sum;
}
// 처음,끝
console.log(hab(10,15));
// 분해 후 곱하기 - C
#include <stdio.h>
int main(void)
{
int i, sum = 0;
for (i = 10; i <= 1000; i++)
{
if (i >= 100)
sum += (i / 100) * (i / 10 % 10) * (i % 10);
else
sum += (i / 10) * (i % 10);
}
printf("%d\n", sum);
// 답은 93150
}
sum=0
for i in range(10, 1001):
mul = 1
for y in str(i):
mul = mul * int(y)
sum = sum + mul
print(sum)
javascript
var multisum = function (from, to) {
return Array.from(Array(to), (v, i) => i + 1).slice(from)
.map(v => ("" + v).split("").reduce((a, b) => a * b))
.reduce((a, b) => parseInt(a) + parseInt(b));
};
console.log(multisum(10, 15)); //->15
console.log(multisum(10, 1000)); //->93150
좀더 줄여보았습니다.
var multisum2 = (f, t) => Array.from(Array(t-f+1),(_,i)=>i+f)
.reduce((a,b)=>[...`${b}`].reduce((c,d)=>c*d,1)+a,0);
console.log(multisum2(10, 15)); //->15
console.log(multisum2(10, 1000)); //->93150
a = list(range(10, 1000))
sum = 0
for i in range(0, len(a)):
if len(str(a[i])) ==2:
sum += int(str(a[i])[0])*int(str(a[i])[1])
elif len(str(a[i])) ==3:
sum += int(str(a[i])[0])*int(str(a[i])[1])*int(str(a[i])[2])
elif len(str(a[i])) ==4:
sum +=int(str(a[i])[0])*int(str(a[i])[1])*int(str(a[i])[2])*int(str(a[i])[3])
print(sum)
# 숫자 각 digit 곱
def multi_digit(num):
str_num = str(num)
result = 1
for chr in str_num:
result = result * int(chr)
return result
# a ~ b 범위에 숫자 각 digit 곱의 합
def sum_multi_digit_result(a, b):
sum = 0
for i in range(a, b + 1):
sum += multi_digit(i)
return sum
print(sum_multi_digit_result(10, 1000)
import java.util.Scanner;
public class dissolve
{
public static void main(String[] args)
{
//편의를 위해 입력 제한 256개
int[] inputs = new int[256];
Scanner input = new Scanner(System.in);
int length = 0; //총 입력 수 기억하기 위한 변수
int number = 10; //while문이 반드시 실행하기 위해 10으로 초기화
int result = 0; //최종적으로 값을 저장하는 변수
System.out.print("숫자를 입력, 입력을 끝내려면 0~9까지의 숫자를 입력(최대 256개) : ");
while(number > 9) // 10 이상의 수가 입력되었을 경우
{
number = input.nextInt();//입력한 정수를 받음
if(number < 10)//10보다 작을 경우
{
System.out.println("입력을 종료.");
break;
}
inputs[length] = number;//배열에 입력을 저장함
length++;//배열 위치 한칸 옮김
}
System.out.println("입력했던 숫자들을 나열.");
//제대로 입력되었는지 확인하기 위한 출력
for(int i = 0; i < length; i++)
{
int n = inputs[i];
System.out.println(n);
}
System.out.println();
for(int i = 0; i < length; i++)
{
int temp;//배열 내부 값 저장 변수
int tempTwo = 1;//각 자리값을 저장하는 변수
int n = 1;//10의 몇 제곱인지 나타내기 위한 변수이며, 나머지를 봐야하므로 1부터 시작
temp = inputs[i];
while(temp > 0)//temp값은 매 반복마다 줄어들게 됨.
{
int powed = (int)Math.pow(10,n);
tempTwo = tempTwo * (temp % powed);//매 나머지 값을 곱함
temp = temp / powed;//temp 값 수정
n++;//제곱값 증가
}
result += tempTwo; //최종 결과를 합산
}
System.out.println(result); //출력
}
}
def divmul(num):
mul = 1
for digit in str(num):
mul *= int(digit)
return mul
p = map(divmul, range(10,1001))
print(sum(p))
Python으로 풀었습니다. 좀 아쉽네요;;
def solve(start, end):
def multiple_of_digit(num):
val = 1
while val != 0 and num > 0:
val *= num % 10
num = int(num / 10)
return val
total = 0
for i in range(start, end + 1):
total += multiple_of_digit(i)
return total
print(solve(10, 1000))
import java.util.Arrays;
public class Test {
public static void main(String[] args){
String arr[] = new String[90];
String a[] = null;
int hap=0;
Arrays.setAll(arr, (i) -> (i++)+10+"");
for (String ar : arr) {
a=ar.split("");
hap+=Integer.parseInt(a[0])*Integer.parseInt(a[1]);
}
System.out.println(hap);
}
}
public class Ex007 {
static int sumOfmpx = 0;
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=10; i<=1000; i++) {
int mpx = 1;
for(int temp = i; temp > 0; temp/=10)
mpx *= temp%10;
sumOfmpx += mpx;
}
System.out.println("합: " + sumOfmpx);
}
}
합: 93150
private static final int BEGIN = 10;
private static final int END = 15;
public static void main(String[] args) {
int result = 0;
for ( int i = BEGIN; i <= END; i++ ){
result += sum(i);
}
System.out.println(result);
}
public static int sum (int num){
int sum = 1;
for ( char c : Integer.toString( num ).toCharArray() ){
sum *= c - 48;
}
return sum;
}
sum=0 for i in range(10,1001): mul = 1 for k in str(i): for j in range(0,len(k)): mul*=int(k[j]) sum+=mul print(sum)
public class Decomposition {
public static void main(String [] args) {
int num, tmp1, tmp2, tmp3,tmp, hap=0;
for(num =10 ; num<=1000 ; num++ ) {
if(num <100) {
tmp1 = num / 10;
tmp2 = num % 10;
hap = hap + (tmp1*tmp2);
}
else if (num<1000) {
tmp1 = num / 100;
tmp = num % 100;
tmp2 = tmp / 10;
tmp3 = tmp % 10;
hap = hap +(tmp1*tmp2*tmp3);
}
}
System.out.println("10~ 1000까지 숫자를 분해하여 곱한 전체합은? : "+hap);
}
}
package java_tutorial;
public class CountSum {
public static void main(String[] args) {
int sum = 0;
for(int i = 10; i < 1001; i++)
{
if (i/100==0)
{
sum += ((i%10) * (i/10));
}
else if (i/1000==0)
{
sum += ((i%10) * ((i/10)%10) * (i/100));
}
else if(i/10000==0)
{
sum += ((i%10) * ((i/10)%10) * ((i/100)%10) * (i/1000));
}
}
System.out.println("숫자의 총 합은 " + sum + "입니다.");
}
}
파이썬3
시작한지 3일밖에 되지 안 돼서 많이 부족합니다
list = list(str(n) for n in range(10,1001))
r = 0
x = 0
while x < len(list):
a = 1
for y in range(0, len(list[x]) ):
a *= int(list[x][y])
r += a
x += 1
print(r)
import java.util.*;
public class MultiplySum {
public static int sumMultiply(int n) {
if(n/10 == 0) return n%10;
return (n%10)*sumMultiply(n/10);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int start = sc.nextInt();
int end = sc.nextInt();
int sum = 0;
for(int i=start;i<=end;i++) {
sum+=sumMultiply(i);
}
System.out.println(sum);
}
}
user_list=[]
st_n=int(input('start number input:'))
end_n=int(input('end number input:'))
debug=raw_input('if you want debug. pleas enter yes: ')
mul=1
sum=0
####### make user_list using user input ########
for i in range(0,end_n-st_n+1):
user_list.append(i+st_n)
user_list2=list('%d'%user_list[i])
for j in range(0,len(user_list2)):
mul=mul*int(user_list2[j])
if debug=="yes":
print('user_list[%d]=%d, user_list2[%d]=%d, mul=%d'%(i,user_list[i],j,int(user_list2[j]),mul))
sum=sum+mul
mul=1
print(sum)
파이선 3.6.1
sum_result=0
for n in range(10,1001):
mul_result=1
for x in str(n):
mul_result*=int(x)
sum_result+=mul_result
print(sum_result)
C
#include <stdio.h>
main() {
int remain, share;
int i;
int value;
int sum = 0;
for (i = 10; i<1001; i++) {
share = i;
value = 1;
while (share>0) {
remain = share % 10;
share = share / 10;
value = value*remain;
}
sum += value;
}
printf("%d\n", sum);
system("pause");
}
C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int returnInteger(char input);
int main()
{
char* tmp = (char*)malloc(sizeof(char)*4);
int resulttmp=1;
for(int i=10;i<=1000;i++)
{
sprintf(tmp,"%d",i);
for(int j=0;j<strlen(tmp);j++)
{
resulttmp = resulttmp*returnInteger(tmp[j]);
}
printf("%d : %d\n",i,resulttmp);
resulttmp=1;
}
return 0;
}
int returnInteger(char input)
{
return (int)input - 48;
}
sum=0
for n in range(10,1001):
num=str(n)
temp = 1
for j in range(len(num)):
temp*=int(num[j]) # 각자리수 곱해서 temp에 담기
sum+=temp # temp의 누계
print(sum)
Swift4 입니다.
import Foundation
let x = (10...1000).map{ n in
let c = Int(log10(Double(n)))
return (0...c).map{ n / Int(pow(10, Double($0))) % 10}.reduce(1, *)
}.reduce(0, +)
print(x)
result = 0
for n in range(10,1001):
a = 1
for x in str(n):
a = a*int(x)
print(a)
result = result + a
print(result)
import functools
def getSum(num1, num2):
arr = map(str, range(num1,num2+1))
result = 0
for x in arr:
x = map(int, list(x))
x = functools.reduce(lambda x,y:x*y, x)
result = result + x
print(result)
getSum(10, 15)
public static void main(String[] args) {
int result = 0;
for(int i = 10; i <= 1000; i++){
char[] cList = Integer.toString(i).toCharArray(); //1,0
int len = cList.length; //2
int multiple = 0;
for(int j = 0; j < len; j++){
if(j < 1) {
multiple = Integer.parseInt(String.valueOf(cList[j]));
} else {
multiple *= Integer.parseInt(String.valueOf(cList[j]));
}
}
result += multiple;
}
System.out.println(result);
}
// golang 1.9
package main
import (
"fmt"
"strconv"
)
func main() {
sum := 0
for i := 10; i <= 1000; i++ {
cnvStr := fmt.Sprintf("%d", i)
calc := 1
for j := 0; j < len(cnvStr); j++ { // 정수->문자에 대해 자리수별 곱
cnvVal, _ := strconv.Atoi(cnvStr[j : j+1])
calc *= cnvVal
}
sum += calc
}
// result
fmt.Println(sum)
}
// ans: 93150
public class Example106 {
public static void main(String[] args) {
int sum = 0;
for (int i = 10; i <= 1000; i++) {
int multiple = 1;
for (char c : String.valueOf(i).toCharArray()) {
multiple *= Character.getNumericValue(c);
}
sum += multiple;
}
System.out.println(sum);
}
}
# python 3.6
sum = 0
for i in range(10, 1001):
mul = 1
for c in str(i):
mul *= int(c)
sum += mul
print(sum)
# ans: 93150
#include <stdio.h>
int main(void) {
int start, end;
// 10~1000사이 2개 숫자를 입력받는다.
printf("Please, input two numbers between 10 and 1000 :");
scanf("%d %d", &start, &end);
// 큰 수부터 입력받았을 경우, 순서교환 (예: 81 70 -> 70 81)
if (end < start) {
int temp = start;
start = end;
end = temp;
}
int i;
int digits_sum=0, total_sum=0;
int hundred, ten, one;
// 각각의 수들을 100의 자리, 10의 자리, 1의 자리로 나눠서 저장
for (i=start; i<=end; i++) {
if (i<100) {
hundred = 1; //dummy digit for muliply
ten = i/10;
one = i%10;
}
else if (i<1000) {
hundred = i/100;
int mod = i%100;
ten = mod/10;
one = i%10;
}
// digits_sum은 각각의 자리값을 곱하고, total_sum은 곱한 값의 총
digits_sum = hundred * ten * one;
total_sum = total_sum + digits_sum;
}
printf("sum= %d\n",total_sum);
return 0;
}
파이썬을 공부한지 얼마 안되서 파이썬처럼 작성하는게 쉽지 않네요.
처음에는 제가 작성한 부분이고 여기 풀이에서 eval(), join()함수를 알고 추가 해 봤습니다.
def GetCrossNum(num) :
sum = 1
for n in range(len(num)) :
sum = sum * int(num[n])
return sum
num = [GetCrossNum(str(n)) for n in range(10, 1001)]
print(sum(num))
num2 = [eval("*".join(str(n))) for n in range(10, 1001)]
print(sum(num2))
public static void countGop(){
int sum = 0;
for(int i=10; i <=1000;i++){
if(i<100) sum += (i/10)*(i%10);
if(i>=100) sum += (i/100)*((i%100)/10)*((i%100)%10);
if(i>=1000) sum+= (i/1000)*((i%1000)/100)*((i%1000)/10)*((i%1000)%10);
}
System.out.println("Result of Sum : "+sum); // 93150
}
python 2.7
sample = range(10, 1001)
numbs = 0
for i in range(len(sample)):
multiples = 1
for j in str(sample[i]):
multiples *= int(j)
numbs += multiples
print (numbs)
python
numbers = [str(i) for i in range(10, 1001)]
l = [list(number) for number in numbers]
mul_num = [int(a[0]) * int(a[1]) if len(a) == 2 else int(a[0]) * int(a[1]) * int(a[2]) for a in l]
print(sum(mul_num))
f = 0
for i in range(10, 1001):
e = i%10
if i>10:
e *= i/10%10
if i>100:
e *= i/100%10
else:
e = 0
f += e
print f
#include <stdio.h>
int main(void){
int i = 0;
int j = 0;
int max = 1000;
int sum = 0;
int temp = 1;
for(i=10;i<=max;i++){
for(j=i;j>0;j=j/10){
temp = temp * (j%10);
}
sum = sum + temp;
temp = 1;
}
printf("총합은 <%d> \n", sum);
return 0;
}
(loop for n from 10 to 1000
sum (apply #'* (map 'list (lambda (x) (digit-char-p x)) (prin1-to-string n))))
>93150
result=0
for i in range(10, 1001):
tmp=1
for j in range(len(str(i))):
tmp*=int(str(i)[j])
result+=tmp
print(result)
파이썬 입니다.
sub=[]
mul=[]
for i in range(10,1001):
n=0
for j in range(len(str(i))):
if j==0:
n=int(str(i)[j])
else:
n=n*int(str(i)[j])
mul.append(n)
result=0
for o in mul:
result=result+o
print(result)
자바입니다...ㅎㅎ
public static void main(String[] args)
{
multiple_add a = new multiple_add();
int result = a.multipleAdd(10,15);
System.out.println("총합: " + result );
}
public int multipleAdd(int min, int max)
{
String str = "";
int sum = 0;
int tmp = 1;
for(int i = min; i< max+1; i++)
{
str = String.valueOf(i);
for(int j = 0; j < str.length(); j++)
{
tmp *= ((int)str.charAt(j) - 48);
}
sum += tmp;
tmp = 1;
}
return sum;
}
public class level_1_10_to_1000_apart_multiply {
public static void main(String[] args) {
int sum = 0;
for(int i = 10; i <= 1000; i++) // 10 부터 1000까지 돌림.
{
int eachmultiply = 1; // 각 자리 숫자를 곱할떄 쓸 임시 수. 곱할때 0이면 무조건 0 이 되므로 1로 설정.
int n = i; // i 값을 n에 대입.
while(n > 0)
{
eachmultiply = eachmultiply * (n % 10); // 각자리 수를 곱함.
n = n / 10;
}
sum = sum + eachmultiply; // 각 자리 수 곱한것의 총 합.
}
System.out.println(sum);
}
}
r = 0
for i in range(10, 1001):
a = str(i)
if i < 100:
r += int(a[0]) * int(a[1])
elif i < 1000:
r += int(a[0]) * int(a[1]) * int(a[2])
else:
r += int(a[0]) * int(a[1]) * int(a[2])
print(r)
a = int(input("시작하는 수 : "))
b = int(input("마지막 수 : "))
def mulsum(n1, n2):
result = 0
c = list(range(n1, n2+1))
for i in c:
d = list(str(i))
while(len(d)<4):
d.append('1')
e = list(map(int,d))
result += e[0]*e[1]*e[2]*e[3]
return result
print(mulsum(a, b))
import java.util.*;
public class Main { public static void main(String[] args) { Scanner scanf=new Scanner(System.in); int sum=1; int total=0;
for(int j=10; j<=15; j++) {
String[] str=(j+"").split("");
for(int i=0; i<str.length; i++) {
sum=sum*Integer.parseInt(str[i]);
}
total=total+sum;
sum=1;
}
System.out.println(total);
}
}```{.java}
```
def msum(n):
result=0
for x in map(str,range(10**n,10**(n+1))):
temp=int(x[0])
for i in range(1,n+1):temp*=int(x[i])
result+=temp
return result
print(sum(map(msum,(1,2))))
#include <stdio.h>
int main(){
int n1, n2;
int num, sum=0;
int result=1;
int k;
scanf("%d %d",&n1,&n2);
// 각 숫자 분해하여 곱
for(k=n1; k<=n2; k++){
num=k; // k부터
while(num!=0){ // 몫이 0이 아니면
result*=num%10; // 자릿수 곱
num/=10; // 다음 자릿수
}
sum+=result; // 곱한결과 합
result=1;
}
printf("%d",sum);
}
def disassemble():
n=input('till:')
a=range(10,n+1)
a=[str(x) for x in a]
disect=[]
multiples=[]
for j in range(n+1-10):
for i in (str(a[j])):
disect.append(i)
disect=[int(x) for x in disect]
#print disect
c=1
for x in range(len(disect)):
c=c*disect[x]
multiples.append(c)
disect=[]
#print multiples
print sum(multiples)
answer=93150
ans_sum=0
for k in range(10,1001):
str_k=str(k)
temp_result=1
for g in str_k:
temp_result*=int(g)
ans_sum+=temp_result
print(ans_sum)
public class numberAdd {
int beginNumber = 10;
int endNumber = 1000;
int sum = 0;
public void numberSum() {
for(int i = beginNumber; i <= endNumber; i++) {
String str = i + "";
int oneSum = 1;
for(int j = 0; j < str.length(); j++) {
oneSum *= Integer.parseInt(str.charAt(j) + "");
}
sum += oneSum;
}
}
public void display() {
System.out.println(beginNumber + "부터 " + endNumber + "까지의 각 자릿수의 합은 :" + sum + "입니다.");
}
}
def prod(n):
n = str(n)
product = 1
for i in n:
product *= int(i)
return product
def prod_sum(i,j):
sum = 0
for x in range(i,j+1):
sum += prod(x)
return sum
print(prod_sum(10,1000))
def total(a, b):
result = 0
for number in range(a, b+1):
disass = 1
for args in str(number):
disass = disass * int(args)
result = result + disass
return result
print(total(10, 1000))
Python 3
int MulEachNumbers(int start, int end)
{
int i;
int n, m, t;
int ret = 0;
for (i = start; i <= end; i++)
{
m = 1;
t = i;
while (1)
{
n = t % 10;
if (t < 10)
{
break;
}
t /= 10;
m *= n;
}
ret += m;
}
return ret;
}
int main()
{
int i;
int number;
int start, end;
printf("start : ");
scanf_s("%d", &start);
printf("end : ");
scanf_s("%d", &end);
printf("========================\n");
number = MulEachNumbers(start, end);
printf("ret : %d\n", number);
return 0;
}
import java.util.Scanner;
public class Total{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int temp = 1;
int toTal = 0;
System.out.println("10~1000까지 숫자의 합은");
for(int i = 10;i<=1000;i++){
int input = i;
int n = (Integer.toString(input)).length();
int [] a = new int [n];
for(int j = 0;j<n;j++){
a[j] = input%10;
input = (int)(input/10);
}
for(int k = 0;k<n;k++){
temp=(temp*a[k]);
}
toTal += temp;
temp = 1;
}
System.out.println("합은" + toTal + "입니다.");
}
}
n,s = int(input("수를 입력하세요")),0
while n < 10:
n = int(input("다시 입력하세요"))
continue
for x in range(10, n+1):
l = list(str(x))
if '0' not in l:
c = 1
for x in range(0, len(l)):
c *= int(l[x])
s += c
print(s)
s = 0
for i in range(10,1001):
m = 1
for j in range(0,len(str(i))):
m *= int(str(i)[j])
s += m
print(s)
start = int(input())
end = int(input())
sum = 0
res = 1
for i in range(start, end+1):
num = str(i)
for j in num:
res = res * int(j)
#res = res * int(num[num.index(j)])
#res = res * int(num[j])
#print(num.index(j))
sum += res
res = 1
print(sum)
def mul(a,b) :
sum = 0
for i in range(a,b+1) :
result = 1
for j in str(i) :
result *= int(j)
sum += result
return sum
print(mul(10,1000))
Swift입니다.
import Foundation
var total = 0
for number in 10...1000 {
total += String(number).reduce(1, { return $0 * Int(String($1))!})
}
print(total)
python 입니다. 가장 쉬운 방법이 아닐까 합니다^^;
total = 0
for n in range(10, 16):
m = 1
for t in str(n):
m = m * int(t)
total = total + m
print(total)
다들 대단하시네요
파이썬
def getmult(num):
num_list = [int(x) for x in str(num)]
result = 1
for i in num_list:
result *= i
return result
result = [getmult(i) for i in range(10,1001)]
print(sum(result))
package codingDojang;
public class OneToTho {
public int oTT() {
int result = 0;
// 10 ~ 1000까지 값을 갖는 배열 생성 후 문자열로 변경
String[] array = new String[991];
for(int i = 0; i <= 990; i++) {
int temp = i + 10;
array[i] = Integer.toString(temp);
}
for(int i = 0; i < array.length; i++) {
String[] temp = array[i].split("");
int tempMulti = 1;
for(int j = 0; j < temp.length; j++) {
if(temp[j].equals(0)) {
break;
}
tempMulti = tempMulti*Integer.parseInt(temp[j]);
}
result += tempMulti;
}
return result;
}
public static void main(String[] args) {
OneToTho ot = new OneToTho();
System.out.print(ot.oTT());
}
}
#include<iostream>
using namespace std;
int sum(int num)
{
int remain = 0;
int devide = 0;
int result = 0;
int sum = 0;
int nano = 0;
int tmp = 0;
for (num; num <= 1000; num++)
{
if (num > 99)
{
nano = num / 100;
tmp = num % 100;
devide = tmp / 10;
remain = tmp % 10;
result = devide * remain * nano;
sum += result;
}
else
{
devide = num / 10;
remain = num % 10;
result = devide * remain;
sum += result;
}
}
return sum;
}
int main()
{
int num = 10;
cout << sum(num) << endl;
}
java8
int i = IntStream.rangeClosed(10, 1000)
.mapToObj((int operand) -> String.valueOf(operand).toCharArray())
.map(chars -> {
int rs = 1;
for (char aChar : chars) {
rs *= Character.getNumericValue(aChar);
}
return rs;
})
.reduce((left, right) -> left + right)
.orElse(0);
System.out.println(i);
public class hello {
public static void main(String[] args) {
int num = 0;
int sum=0;
int m;
int n;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
k = i * j;
num += m;
System.out.println(i + "*" + j + "=" + m);
}
System.out.println(num);
}
for (int i1 = 1; i1 < 10; i1++) {
for (int j1 = 0; j1 < 10; j1++) {
for (int i2 = 0; i2 < 10; i2++) {
k1 = i1 * j1*i2;
sum += n;
System.out.println(i1 + "*" + j1+"*" +i2+ "=" + n);
}
}
System.out.println(sum);
}
System.out.println(num+sum);
}
}
// 자바
public static void main(String[] args) throws Exception {
int sum = 0;
for (int i=10; i<1000; i++) {
int sum2 = 0;
if(!(i+"").contains("0")) {
sum2 = i%10;
if (i>=10)
sum2 *= i/10%10;
if (i>=100)
sum2 *= i/100%10;
}
sum += sum2;
}
System.out.println(sum);
}
sum1 = 0
for i in range(10,1001):
num1 = 1
for j in map(int, str(i)): num1 *= j
sum1 += num1
print(sum1)
# Output:
#93150
data=[]
for i in range(10,1001):
result=1
for j in str(i):
result *= int(j)
data.append(result)
print(sum(data))
Python
ans = 0
a = 10
b = 1000
for i in range(a, b+1):
in_ans = 1
for c in str(i):
in_ans *= int(c)
ans += in_ans
print(ans)
엄청 어렵게 풀었네요
multiple_list = []
for i in range(10, 1001):
count = 0
num = str(i)
temp_list = []
multiple = 1
while(len(num) > count ):
temp_list.append(num[count])
count += 1
for i in temp_list:
multiple = multiple * int(i)
multiple_list.append(multiple)
print(sum(multiple_list))
def MulDecomp(n, m):
if n>m: n, m = m, n
sum = 0
for num in range(n, m+1):
tmp = 1
for char in str(num):
tmp *= int(char)
sum += tmp
return sum
sum = 0
for num in range(10, 1001):
mul = 1
for letter in str(num):
mul *= int(letter)
sum += mul
print(sum)
ans = 0
while True:
n = str(input("10~1000까지의 수를 입력하세요. 전체 합을 구하시고 싶으시다면 'add'를 입력하세요 "))
if n in {"add"}:
print(ans)
break
if len(n) == 2: ans += int(n[0]) * int(n[1])
if len(n) == 3: ans += int(n[0]) * int(n[1]) * int(n[2])
if len(n) == 4: ans += int(n[0]) * int(n[1]) * int(n[2]) * int(n[3])
public class ten {
public static void main(String[] args) {
int sum = 0;
for (int i = 10; i < 1001; i++) {
int sum1 = 1;
for (int j = 0; j < (i + "").length(); j++)
sum1 *= Integer.valueOf((i + "").substring(j, j + 1));
sum += sum1;
}
System.out.println(sum);
}
}
#include <iostream>
using namespace std;
int main() {
int sum=0,temp=0, temp_sum = 0;
for (int i = 10; i <= 1000; i++) {
temp = i;
temp_sum = 1;
do {
temp_sum *= (temp % 10);
} while ((temp /= 10) != 0);
sum += temp_sum;
}
cout << sum;
return 0;
}
#include <stdio.h>
int main()
{
int i;
int first = 0, second = 0, sum = 0;
for (i = 10; i < 1001; i++)
{
if (i < 100)
{
sum = sum + ((i / 10) * (i % 10));
}
else
{
sum = sum + ((i / 100) * ((i / 10) % 10) * (i % 10));
}
}
printf("sum: %d\n", sum);
return 0;
}
def el_mt(n):
result = 1
for i in str(n): result *= int(i)
return result
print(sum(map(el_mt,range(10,1001))))
# 93150
blank=[]
total=0
for n in range(10,1001):
mul=1
for i in str(n):
mul *= int(i)
blank.append(mul)
for k in range(len(blank)):
total += blank[k]
print(total)
def fn(s, e):
list1 = list(range(s, e+1))
sum = 0
for i in list1:
mul = 1
for j in list(str(i)):
mul = mul * int(j)
sum += mul
return sum
print(fn(10, 15))
print(fn(10, 1000))
package com.company;
public class Main {
public static void main(String[] args) {
getMult();
}
public static void getMult()
{
int sum = 0;
int k = 0;
int mul = 0;
for(int i = 10; i < 1000; i++)
{
k = (int)(Math.log10(i)+1);
if(k == 2){
mul = (i/10) * (i%10);
sum += mul;
}
else {
mul = (i/100) * ((i%100)/10) * (i%10);
sum += mul;
}
}
System.out.println("총합은 "+sum);
}
}
def mul_split(num):
if(num < 10):
print("Error: input number must bigger than 10 ")
else:
res = 0
for i in range(10, num + 1):
temp = 1
for x in str(i):
temp *= int(x)
res += temp
print(res)
sum_list = []
sum = 0
for i in range(10,1001):
number = str(i)
str_list = list(number)
mul = 1
for j in str_list:
mul *= int(j)
sum_list.append(mul)
for k in sum_list:
sum += k
print(sum)
파이썬입니다.
sum = 0
for i in range(10,1001):
mul = 1
for n in str(i) : mul *= int(n)
sum += mul
print(sum)
c언어입니다. 기존의1~1000에서 각 숫자의 개수 구하기 코드를 변형하여 작성하였습니다.
#include<stdio.h>
int main()
{
int sum = 0, mul=0;
int i,j;
int quotient = 0;
for(i=10; i<=1000; i++)
{
printf("%d ", i);
j = i;
mul = 1;
while(j>0)
{
quotient = j%10;
j = j/10;
mul = mul *quotient;
printf("sub : %d ", quotient);
}
printf(" 자리수의 곱은 %d \n", mul);
sum = sum+mul;
}
printf("10 ~ 1000 까지의 합계는 %d 입니다. ", sum);
}
C로 작성
#include <stdio.h>
int main()
{
int sum = 0;
for(int i = 10 ; i < 1000; i ++ )
{
if( i >= 10 && i < 100 ) //십의 자리
{
sum += ( ( i / 10 ) * ( i % 10 ) );
}
else if( i >= 100 && i < 1000 ) //백의 자리
{
sum += ( ( i / 100 ) * ( ( i % 100 ) / 10 ) * ( i % 10 ) ) ;
}
}
printf("%d", sum);
}
result=0
for i in range(10,1001):
a = list(str(i))
a= '*'.join(a)
result += eval(a)
print(result)
#93150
result=0
for i in range(10,1001):
a = list(str(i))
a= '*'.join(a)
result += eval(a)
print(result)
#93150
def number():
fir = int(input('첫번째 숫자:'))
sec = int(input('두번째 숫자:'))
lst =[]
for i in range(fir,sec+1):
t = 1
for j in range(0, len(str(i))):
t *= int(str(i)[j])
lst.append(t)
return(sum(lst))
파이썬 초보
tmp = []
tmp_1 = []
mul = 0
for i in range(10, 1000+1):
i = str(i)
tmp = list(i)
if len(i) == 3:
mul = int(tmp[0]) * int(tmp[1]) * int(tmp[2])
elif len(i) == 4:
mul = int(tmp[0]) * int(tmp[1]) * int(tmp[2])
else:
mul = int(tmp[0]) * int(tmp[1])
tmp_1.append(mul)
print(sum(tmp_1))
sum = 0
for i in range(10, 1001):
mul = 1
for j in [int(x) for x in str(i)]:
mul *= j
sum += mul
print(sum)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int sum = 0;
for(int i = 1;i<=9;i++)
{
for(int j = 1;j<10;j++)
{
sum = sum + (i*j);
}
}
for(int i = 1;i<=9;i++)
{
for(int j = 1;j<10;j++)
{
for(int k = 1;k<10;k++)
sum = sum + (i*j*k);
}
}
System.out.println(sum);
}
}
sum=0
for i in range(10,1001,1):
num = str(i)
mul=1
for j in num:
mul*=int(j)
sum+=mul
return print(sum)
result = 0
for i in range(10,1001):
indi = 1
for r in str(i):
indi *= int(r)
result += indi
print(result)
public class KimSanghyeop
{
public static void main(String[] args)
{
int f1;
int temp;
int res;
int sum=0;
for(f1=10;f1<=1000;f1++)
{
temp=f1;
res=1;
while(temp!=0)
{
res = res * (temp %10);
temp=temp/10;
}
sum +=res;
}
System.out.println(sum);
}
}
sum=0
for x in range(10,1001):
if x<100:
sum+=(x//10)*(x%10)
elif 100<=x<1000:
sum+=(x//100)*((x//10)%10)*(x%10)
elif x==1000:
sum+=0
print(sum)
result = 0
for n in range(10, 1001):
part = 1
for i in str(n):
part *= int(i)
result += part
print(result)
Java 8
import java.time.Duration;
import java.time.LocalTime;
import java.util.stream.IntStream;
public class tut05 {
public static void main(String[] args) {
int result = 0;
LocalTime startTime = LocalTime.now();
// 연산
result = IntStream.rangeClosed(10, 1000)
.map(i -> (i+"").chars()
.map(j -> Character.getNumericValue(j))
.reduce((a, b) -> a * b)
.getAsInt())
.sum();
LocalTime endTime = LocalTime.now();
Duration duration = Duration.between(startTime, endTime);
System.out.println("ducation : " + duration.getSeconds());
System.out.println("result : " + result);
}
}
n = 10
total = 0
while n < 1001 :
sum = 1
for i in list(str(n)) :
sum *= int(i)
total += sum
n += 1
print(total)
def mul(str_num):
listnum = list(str(str_num))
total = 1
for i in listnum:
total *= int(i)
return total
Sum = 0
for i in range(10,1001):
Sum += mul(i)
print(Sum)
public class KimSanghyeop
{
public static void main(String[] args)
{
int sum=0;
int temp;
int res=1;
for(int f1=10;f1<=1000;f1++)
{
temp = f1;
res=1;
while(temp!=0)
{
res = res *( temp % 10);
temp = temp /10;
}
sum +=res;
}
System.out.println("합계 : "+sum);
}
}
from functools import reduce
tmp = 0
for i in range(10,1001) :
tmp += reduce(lambda x,y : x*y, map(int,list(str(i))))
print(tmp)
res_mul = [1 for x in range(10,1001)]
for i in range(10,1001):
for j in str(i):
res_mul[i-10] *= int(j)
print(sum(res_mul))
답 : 93150
total_result = []
for i in range(10,1001):
partial_result = 1
for j in list(str(i)):
partial_result *= int(j)
total_result.append(partial_result)
answer = 0
for i in total_result:
answer += i
print(answer)
namespace codingdojang__
{
class Program
{
static void Main(string[] args)
{
int total = 0;
for (int i = 10; i < 1000; i++)
{
int temp = i;
int temp_mul = 1;
while (temp != 0)
{
temp_mul *= temp % 10;
temp /= 10;
}
total += temp_mul;
}
Console.WriteLine(total);
}
}
}
답 - 93150
total = 0
for i in range(10,1001):
if i >= 10 and i < 100:
temp = (i//10)*(i%10)
total += temp
else:
temp = (i//100)*((i//10)%10)*(i%10)
total += temp
print(total)
#include<list>
#include<iostream>
using namespace std;
int main(void)
{
int total = 0;
list<int>ls; list<int>::iterator ltr;
for (int i = 10; i <= 1000; i++)
{
int num0 = i / 1000; if (i< 1000)num0 = 1;
int num1 = (i % 1000) / 100; if(i < 100)num1 = 1;
int num2 = ((i % 1000) % 100) / 10;
int num3 = (i % 1000) % 100 % 10;
int mult = num0 * num1*num2*num3;
ls.push_back(mult);
}
ls.unique();
for (ltr = ls.begin(); ltr != ls.end(); ltr++)
{
total += *ltr;
}
cout << total << endl;
}
const memory = []
for(let i = 10; i<1001; i++){
let result = 1
const splitted = String(i).split('')
for(let j = 0; j<splitted.length; j++ ){
result = result*splitted[j]
}
memory.push(result)
}
let result = 0
for(let m= 0; m<memory.length; m++){
result = result + memory[m]
}
console.log(result)
//93150
R로 작성
split = function(front, back){
collect = c(); sum = 0
for(i in front:back){
i = strsplit(as.character(i), "")[[1]]
tmp2 = 1
for(j in 1:length(i)) tmp2 = tmp2 * as.numeric(i[j])
collect = append(collect, tmp2)
}
print(collect)
for(i in 1:length(collect)){
sum = sum + collect[i]
}
return(sum)
}
result = 0
for i in range(10,1001):
b = 1
for num in str(i):
b *= int(num)
result += int(b)
print(result)
[Python] string 으로 변환 후, 각 자릿수를 indexing 하여 곱하는 코드
def func(a, b):
result = 0
n = 1
for i in range(a, b + 1):
for j in range(len(str(i))):
n *= int(str(i)[j])
result += n
n = 1
return result
print(func(10, 1000))
93150
public class Sum_Multiplication {
public static void main(String[] args){
int sum = 0;
int[] num = new int[4];
for(int i = 10; i<=1000; i++){
int flag = 0;
for(int j=i; j>0; j /= 10)//num[0]- 1의자리수, num[1] - 10의자리수, num[2] - 100의 자리수, num[3] - 1000의 자리수
num[flag++] = j%10;
if(num[3] == 0)
if(num[2] == 0)
sum += num[1]*num[0];
else
sum += num[2]*num[1]*num[0];
else
sum += num[3]*num[2]*num[1]*num[0];
}
System.out.println(sum);
}
}
//코드에 대한 의견 환영입니다!
def solution(a,b):
summ = 0
for i in range(a,b+1):
xx = 1
for j in str(i):
xx *= int(j)
summ += xx
return summ
anwer : 93150
public static void main(String[] args) {
int sum=0;
for(int i=10;i<=1000;i++) {
if(i<100)
sum+=(i/10)*(i%10);
if(100<=i && i<1000)
sum+=(i/100)*(i%100/10)*(i%10);
if(1000<=i)
sum+=(i/1000)*(i%1000/100)*(i%100/10)*(i%10);
}
System.out.println(sum);
}
first = 0
for i in range(10, 1001) :
i = str(i)
second = 1
for j in i :
second = second * int(j)
first = first + second
print(first)
파이썬입니다
import re
box = []
for i in range(10,10001):
b = str(i)
p = re.compile(".+(?!0+).+")
m = p.match(b)
if m:
c = m.group()
d = eval("*".join(c))
box.append(d)
print(sum([z for z in box]))
#1위 답안
print(eval('+'.join('*'.join(str(x)) for x in range(10, 10001))))
gob = 1
hab = 0
for i in range(10, 1001) :
for j in str(i) :
gob *= int(j)
hab += gob
gob = 1
print(hab)
static void Main(string[] args)
{
Console.WriteLine("*** 코딩도장 Q106 ***");
// 10~1000 각 자릿수 분해하여 곱하기의 전체합
int startNum = 10;
int endNum = 1000;
string tmp;
int gop = 1;
int hap = 0;
for (int i = startNum ; i <= endNum ; i++)
{
gop = 1;
Console.WriteLine(i);
tmp = i.ToString();
foreach (char j in tmp)
{
gop = gop * 1 * int.Parse(j.ToString());
Console.WriteLine("gop = " + gop);
}
hap = hap + gop;
}
Console.WriteLine("{0} 부터 {1} 까지 자릿수 분해하여 곱하기의 전체합은", startNum, endNum);
Console.WriteLine("{0} 입니다.", hap);
count_list=[0,0,0,0,0,0,0,0,0,0]
sum=0
for num in range(10,16):
mul=1
for index in str(num):
mul*=int(index)
sum+=mul
print(sum)
def digitproduct(n):
product=1
for i in str(n):
product*=int(i)
return product
sum=0
for i in range(10,1001):
sum+=digitproduct(i)
print(sum)
result = 0
for n in range(10,16):
kkk=1
for i in str(n):
kkk = int(i)*kkk
result +=kkk
print(result)
색다르게 사용자정의함수를 이용해서 코딩해보았습니다.
#include <stdio.h>
int sum(int a, int b)
{
int answer = 0;
for (int i = a; i <= b; i++)
{
if (i >= 10 && i < 100)
{
answer += ((i % 10) * (i / 10));
}
if (i >= 100 && i < 1000)
{
answer += ((i % 10) * (i / 10 % 10) * (i / 100));
}
else
{
answer += ((i % 10) * (i / 10 % 10) * (i / 100 % 10) * (i / 1000));
}
}
return answer;
}
void main() {
printf("%d", sum(10, 1000));
}
c요~
#include <stdio.h>
int main(){
int num,digit=0,sum=0,num1=1;
for(int i=10;i<=1000;i++){
num = i;
num1 = 1;
while(1){
digit = num % 10;
num1 *= digit;
if(num>=10){
num = num / 10;
}
else
break;
}
sum += num1;
}
printf("%d",sum);
}
#include <stdio.h>
int main()
{
int sum = 0;
for (int i = 10; i <= 1000; i++)
{
if (i < 100)
sum += (i / 10)*(i % 10);
else
sum += (i / 100)*((i/10)%10)*(i%10);
}
printf("%d", sum);
return 0;
}
예전에 어떤 문제를 어떤 분께서 코딩없이 푸시는 걸보고 감명받아서,
이번 문제는 저도 코딩없이 풀어보았습니다.
1. 규칙성
10 > 1x0 | 20 > 2x0 | ... | 90 > 9x0
19 > 1x9 | 29 > 2x9 | ... | 99 > 9x9
>> 즉, 10 ~ 99 : [1~9단까지의 합]
100단위 : 1_00 -> 1 x [1~9단까지의 합]
200단위 : 2_00 -> 2 x [1~9단까지의 합]
.
.
.
900단위 : 9_00 -> 9 x [1~9단까지의 합]
>> 위의 100단위들을 sum한다고 가정하면,
>> (1~9까지의 합) x [1~9단까지의 합]
*****결국, 문제의 답은 [1 + (1~9까지의 합)] x [1~9단까지의 합] 을 구하면 됩니다.
a = 1~9까지의 합
b = 1~9단까지의 합
2. 1~9단까지의 합
(1~9의 합) * (1~9의 합) = [1~9단까지의 합]
a x a = b
a = 45
b = 2025
3. 전체 합
(1+a) x b
= (1+45) x 2025
= 93150
즉, 답은 93150입니다.
proto=[]
for n in range(10,1001):
if '0' in str(n):
continue
seki=1
for i in str(n):
seki*=int(i)
proto.append(seki)
print(sum(proto))
계산 횟수를 쬐끔이라도 줄이기 위하여, 0이 하나라도 들어가는 수의 경우에는 아무런 조작도 않도록 조치를 하여 보았읍니다. 물론 이 문제에서는 볼륨이 크지 않으니 딱히 의미는 없지만;;
누구나 생각가능한 방법 O(N)
#include <iostream>
#define MIN 10
#define MAX 1000
using namespace std;
int main()
{
int sum = 0;
int tmp_sum;
for(int i = MIN; i <= MAX; i++)
{
tmp_sum = 1;
for(int j = 1 ; i / j > 0 ; j*=10)
{
tmp_sum *= i / j % 10;
}
sum += tmp_sum;
}
cout << sum;
return 0;
}
temp = [k for k in range(10, 1001)]
tsum = 0
for i in temp:
mul = 1
for j in list(str(i)):
mul = int(j) * mul
tsum = mul + tsum
print(tsum)
python 3.6
result = 0
for i in range(10, 1001):
temp = 1
for j in str(i):
temp *= int(j)
result += temp
print('result :', result)
list1=[]
for i in range(10,1001):
list1.append(i)
sum1=0
sum2=0
for i in list1:
if i <100:
a=i//10
b=i%10
c=a*b
sum1+=c
else:
a=i//100
b=i%100
c=b//10
d=b%10
e=a*c*d
sum2+=e
print(sum1+sum2)
public class SumOfEachDigitMutiplication {
public static void main(String[] args) {
int[] input = {10 ,11, 12, 13, 14, 15};
int sum = 0;
for(int i= 0; i<input.length; i++) {
sum += getPartial(input[i]);
}
System.out.println(sum);
}
private static int getPartial(int num) {
String strNumber = String.valueOf(num);
int mult = 1;
for(int i=0; i<strNumber.length(); i++) {
mult *= Integer.parseInt(String.valueOf(strNumber.charAt(i)));
}
return mult;
}
}
result = []
for i in range(10, 1000 + 1):
data = list(str(i))
data = '*'.join(data)
result.append(eval(data))
print(sum(result))
"" sum_i = 0 for i in range(10,1001): list_i = list(str(i)) #print(list_i)
multi_j = 1
for j in list_i:
multi_j *= int(j)
#print(multi_j)
sum_i += multi_j
print(sum_i)
package codingdojang;
import java.util.Scanner;
public class No106 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int startNum=0, endNum=0, sum=0;
System.out.println("10~1000까지 각 숫자 분해하여 곱하기의 전체 합 구하기");
System.out.print("시작숫자>");
startNum = scanner.nextInt();
System.out.print("마지막 숫자>");
endNum = scanner.nextInt();
for(int i = startNum; i<=endNum; i++) {
if(10<=startNum && 99>=startNum) {
sum += (i/10) * (i%10);
}else if(100<=startNum && 999>=startNum) {
sum += (i/100) * ((i/100)/10) * (i%100);
}else if(1000==startNum)
sum += (i/1000) * ((i/1000)/100) * (((i/1000)/100)/10) * (i%1000);
}
System.out.println(startNum + "~" + endNum + "까지의 분해하여 곱하기의 전체합은" + sum + "입니다.");
}
}
public class multisum {
public static void main(String[] args)
{
int x,y,a,b,n,c,d,sum;
sum=0;
for(n=10;n<=1000;n++) {
if(n<=99&&n>=10) {
a = n / 10;//10의자리
b = n % 10;//1의자리
c = a * b;
}
else if(n>99&&n<1000) {
a = n / 100;//122를 100으로 나누면 1
b= n % 100;//나머지는 22 b=22
d= b/10;//b/10=2 그러므로 d에는 2가 저장
b=b%10;//b=2
c=a*d*b;
}
else
{
a=n/1000;//1231을 1000으로 나누면 1 a=1
b=n%1000;//231 b=231
x=b/100;//x=2
b=b%100;//b=31
y=b/10;//y=3
b=b%10;//b=1
c=a*x*y*b;
}
sum+=c;
}
System.out.println("1000까지의 숫자합은:"+sum);
}
}
자바로 풀었습니다. 초보라..ㅠㅠ 원시적인 방법이라니...
result = []
for i in range(10,1001):
t = str(i)
a = 1
for j in range(len(t)):
a *= int(t[j])
result.append(a)
print(sum(result))
L = [str(x) for x in range(10, 1001)]; mul = 1; mulSum = 0
for i in L :
for n in i: mul *= int(n)
mulSum += mul
mul = 1
print(mulSum)
python
sum = 0
for i in range(10,1001):
a = list(str(i))
prod = 1
for k in range(len(a)):
prod *= int(a[k])
sum += prod
print(sum)
a=[]
j=0
mul=1
for i in range(10,1001,1):
s=str(i)
while j <= len(s)-1:
mul=mul*int(s[j])
j +=1
a.append(mul)
j=0
mul=1
print(sum(a))
sum = 0
for i in range(10, 1001):
t = 1
map_1 = map(int, str(i))
for j in map_1:
t *= j
sum += t
print(sum)
list3 = 0
for i in range(10,1001):
list1 = list(str(i))
list2 = 1
for j in range(0,len(list1)):
list2 *= int(list1[j])
list3 += list2
print(list3)
lstNums = [[int(a) for a in str(x)] for x in range(10, 1001)]
def multiply(lst):
result = 1
for x in lst:
result = result*x
return result
print(sum([multiply(lstNum) for lstNum in lstNums]))
PHP
$a = 10;
$b = 1000;
$arr = [];
foreach (range($a, $b) as $n) {
$arr[] = array_product(str_split(strval($n)));
}
$result = array_sum($arr);
print_r($result); // 93150
def gobhab(a, b):
n = 0
for i in range(a, b + 1):
k = 1
for j in range(0, len(str(i))):
k = k * int(str(i)[j])
n = n + k
print('{}부터 {}까지 각 자릿수를 곱해 더하면 {}가 됩니다.'.format(a, b, n))
int sum = 0;
for(int i=10; i<=1000; i++) {
int m = 1;
char[] j = String.valueOf(i).toCharArray();
// 각각 자릿수 별로 char array로 만들었다.
for(int n=0; n<j.length; n++) {
m *= Character.getNumericValue(j[n]);
// 각 자릿수를 모두 더한다.
}
System.out.println(m);
sum += m ;
}
System.out.println("10부터 1000까지 답은 : "+sum);
답 : 93150
for i in range(10,1001):
tmp = str(i)
sum = 1
for value in tmp:
sum = sum * int(value)
result = result + sum
print(result)
파이썬
sum = 0
for x in range(10, 1001):
multi_x = 1
for i in str(x):
multi_x *= int(i)
sum += multi_x
print(sum)
package d106_taking_apart_multiplying_sum;
import java.util.Scanner;
public class TakingApartMultiplyingSum {
int apartmulti(int X) { //분해하고 곱하는 함수
int i=1, result=1;
for(i=1; X/i>0; i*=10) result*=(X/i)%10;
return result;
}
public static void main(String[] args) {
TakingApartMultiplyingSum am=new TakingApartMultiplyingSum();
Scanner sc=new Scanner(System.in);
System.out.println("Input two numbers:");
int X=sc.nextInt();
int Y=sc.nextInt();
int j, sum=0;
int[] multi=new int[Y-X+1];
for(j=0; j<Y-X+1; j++) {
sum+=am.apartmulti(X+j); //전체 합 구하기
}
System.out.println("Output:"+sum);
sc.close();
}
}
python 3
sum1 = 0
for x in range(10, 1001):
mul = 1
for xx in str(x):
mul = mul*int(xx)
sum1 += mul
print(sum1)
출력: 93150
package practiceLv1;
import java.util.ArrayList;
public class 각숫자분해하여곱하기의전체합구하기 {
public static void main(String[] args) {
int numbers = 0;
for(int i = 10; i<1001; i++) {
if(i<100) {
numbers+=((i/10)*(i%10));
}
if(100<=i) {
numbers+=(((i/10)/10)*((i/10)%10)*((i%100)%10));
}
if(i==1000) {
numbers+=(0);
}
}
System.out.println(numbers);
}
}
파이썬
ssum=0
for x in range(10,1001):
multi=1
for i in str(x):
multi *= int(i)
ssum+=multi
print(ssum)
파이썬 3.6 입니다
def sum_multiples(n, m):
rst = []
for i in range(n, m + 1):
mul = 1
for ch in str(i):
mul *= int(ch)
rst.append(mul)
return sum(rst)
print(sum_multiples(10, 1000))
c = 0 for i in range(10, 0): a = str(i) b = 1 for x in range(len(a)): b = b * int(a[x]) c = c + b print(c)
num =[]
for i in range(10,16):
s = list(str(i))
s = '*'.join(s)
num.append(eval(s))
print(s+'=',end=' ')
print(eval(s))
print(sum(num))
int Sum_of_Each_Cipher_multiply()
{
int result =0;
for(int T=0;T<10;T++)
{
for(int S=0;S<10;S++)
{
for(int F=0;F<10;F++)
{
if(T==0)
{
result += S*F;
}
else if(T==0&&S==0)
{
result += F;
}
else if(!(T==0&&S==0))
{
result += T*S*F;
}
}
}
}
return result;
}
#0이 들어가는 숫자를 제외한 리스트 뽑기
lst=[]
for n in range(10,1001):
n=str(n)
if "0" not in n:
lst.append(n)
#각 요소의 자리에 있는 숫자들을 서로 곱한 뒤에 더하기
result1=0
for k in lst:
t=1
for n in range(len(k)):
t=t*int(k[n])
result1+=t
print(result1) #93150
def get_mul(n):
mul = 1
for i in str(n):
mul *= int(i)
return mul
print(sum([get_mul(x) for x in range(10,1001)]))
numLst = [x for x in range(10,16)]
empty = []
for i in numLst:
i = str(i)
tmp = int(i[0])*int(i[1])
empty.append(tmp)
print(sum(empty))
a = 1
conseq = []
for x in range(10,1001):
n = list(str(x))
m = list(map(int, n))
for i in m:
a *= i
conseq.append(a)
a = 1
print(sum(conseq))
파이썬3입니다
def da(x):
mul = 1
for i in tuple(map(int,str(x))):
mul *= i
return mul
answer = 0
for i in range(10,1001):
answer += da(i)
print(answer)
1)
sum=0
for i in range(10,1001):
n=1
for j in str(i):
n=n*int(j)
sum=sum+n
print(sum)
2)
print(sum(eval('*'.join(str(x))) for x in range(10, 1001) if(str(x).find("0")< 0)))
Nfinish, Nlist, Nmain = 0, list(), 1
for i in range(10,1001):
Nlist = list(str(i))
for j in range(len(Nlist)):
Nmain = Nmain * int(Nlist[j])
Nfinish += Nmain
Nmain = 1
print(Nfinish)
sum1=0
for i in range(10,100):
a=str(i)
sum2=int(a[0])*int(a[1])
sum1=sum1+sum2
sum2=0
for i in range(100,1000):
a=str(i)
sum2=int(a[0])*int(a[1])*int(a[2])
sum1=sum1+sum2
print(sum1)
result = [] for i in range(0, 10): for j in range(0, 10): a = i*j result.append(a)
result1 = [] for i in range(0, 10): for j in range(0, 10): for k in range(0, 10): b = ijk result1.append(b)
sum = 0 for x in result: sum += x
sum1 = 0 for y in result1: sum1 += y
print(sum + sum1)
from functools import reduce
answer = 0
for i in range(10, 1001):
answer = answer + reduce(lambda x,y : x*y, [int(i) for i in str(i)])
print(answer)
파이썬 3.8
def special_mul(i,j):
array = []
for t in range(i, j+1):
t = str(t)
mul = 1
for k in range(len(t)):
mul *=int(t[k])
array.append(mul)
return(sum(array))
print(special_mul(10,1000))
``````{.python} result = 0 num=0 for i in range(10, 1001): if len(i) == 2: num = i[0] * i[1] result += num i+= 1 elif len(i) == 3: num = i[0] * i[1] * i[2] result += num i+= 1 else: num = i[0] * i[1] * i[2] * i[3] result += num i+= 1
print result
```
a=[]
b=[]
for i in range(10,1001):
a.append(i)
for i in range(len(a)):
a[i]=str(a[i])
c=1
for j in range(0,len(a[i])):
c*=int(a[i][j])
b.append(c)
print(sum(b))
#답: 93150
l=[]
for i in range(10,1001):
l.append('*'.join(str(i))) #iterable 자료형만 join 함수 인수로 쓸수있음
print(eval('+'.join(l)))
파이썬 3.7
sum = 0
each = 1
for i in range(10, 1001):
for j, v in enumerate(str(i)):
each *= int(v)
sum += each
each = 1
print(sum)
sum=0
for i in range (10, 1001):
print (i,end='')
a=str(i)
a_len=len(a)
mul=1
for j in range (0,a_len):
mul=mul*int(a[j])
sum=sum+mul
print (' ',mul,' ',sum)
print ()
print ('result=',sum)
import re
p=re.compile('\d')
result=0
for i in range(10, 1001):
ccw=1
for j in p.findall(str(i)):
ccw*=int(j)
result+=int(ccw)
print(result)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
/*
예로, 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
*/
//정답:93150
void Func(int s, int e) {
vector<int> v;
int total = 0;
int sum;
for (int i = s; i <= e; i++) {
sum = 1;
cout << i<<" = ";
string s = to_string(i);
for (int j = 0; j < s.length(); j++) {
if (j == s.length() - 1) { cout << s[j] <<" = "; }
else { cout << s[j] << " * "; }
sum *= (s[j] - '0');
}
cout << sum << endl;
v.push_back(sum);
total += sum;
}
cout << endl;
for (int i = 0; i < v.size(); i++) {
if (i == v.size() - 1) { cout << v[i] << " = "; }
else{cout << v[i] << " + ";}
}
cout << total << endl;
}
int main() {
Func(10, 1000);
}
s=0
for i in range(10,1001):
if 10<=i<=99:
s+=((i//10) * (i%10) )
elif 100<=i<=999:
s+=( (i//100) * (i%100//10 ) * (i%10) )
else:
pass
print(s)
파이썬 입니다.
result = 0
for i in range(10,1001):
if i<100:
string = str(i)
result = result + (int(string[0])*int(string[1]))
elif i >= 100 and i<1000:
string = str(i)
result = result + (int(string[0])*int(string[1])*int(string[2]))
print(result)
sum=0
for m in range(10,1001):
if len(str(m))==3:
sum+=int(str(m)[0])*int(str(m)[1])*int(str(m)[2])
elif len(str(m))==2:
sum+=int(str(m)[0])*int(str(m)[1])
else:pass
print(sum)
temp=0
for i in range(10,1001):
k=str(i)
if len(k) == 2 :
temp += int(k[0])*int(k[1])
elif len(k) ==3 :
temp += int(k[0])*int(k[1])*int(k[2])
print(temp)
public class Q106 {
public static void main(String[] args) {
int sum=0;
for (int i = 10; i < 1001; i++) {
if(i<100) sum += (i/10) * (i%10);
if(i>99&&i<1000) sum += (i/100) * (i/10%10) * (i%10);
if(i==1000) sum += (i/1000) * (i/100%10) * (i/10%10) * (i%10);
}
System.out.println(sum);
}
}
from functools import reduce
def sum_mult():
return sum([reduce(lambda x, y: int(x) * int(y), str(i)) for i in range(10, 1001)])
lista =[]
listb =[]
listc =[]
for x in range(10,100):
a = str(x)
lista.append(int(a[0])*int(a[1]))
for x in range(100,1000):
b = str(x)
listb.append(int(b[0])*int(b[1])*int(b[2]))
for x in range(1000,1001):
c = str(x)
listc.append(int(c[0])*int(c[1])*int(c[2])*int(c[3]))
A = (sum(lista))
B = (sum(listb))
C = (sum(listc))
print(A+B+C)
파이썬 입문자라,,,,ㅎㅎ 화이팅
range1=list(map(int,input().split("~")))
number_list=[i for i in range (range1[0],range1[1]+1)]
number_plus=[]
for i in number_list:
string=(','.join(str(i))).split(",")
k=1
for a in string:
k=k*int(a)
number_plus.append(k)
x=0
for y in number_plus:
x+=y
print(x)
``` list = []
b = 0
for x in range(10,1001): a = 1 for i in str(x): a *= int(i) list.append(a)
for i in list: b += i
print(b)
맨날 배열 for 문만 사용하니 실력이 늘지 않는 느낌..
package main
import (
"fmt"
"strconv"
"strings"
)
func sum(N int, M string) int {
var returnvalue int = 1
check := strings.Split(M, "")
for i := 0; i < N; i++ {
num, _ := strconv.Atoi(check[i])
returnvalue = returnvalue * num
}
return returnvalue
}
func forgo(N int, M int) int {
var final int
for i := N; i <= M; i++ {
var s string
s = strconv.Itoa(i)
final = final + sum(len(s), s)
}
return final
}
func main() {
var M1 int
var M2 int
fmt.Scanf("%d %d", &M1, &M2)
fmt.Println(forgo(M1, M2))
}
eval함수 쓰임을 몰라 코드가 길어졌었는데 다른 분들 풀이보고 한단계 배울 수 있었습니다. 다들 감사합니다.
print(sum([eval("*".join(str(i))) for i in range(10,1001)]))
#include <iostream>
#include <string>
using namespace std;
int main() {
int result_Sum = 0;
for (int number = 10; number <= 1000; number++) {
string stringNumber = to_string(number);
int multi_Sum = 1;
for (int i = 0;i< stringNumber.length(); i++) {
multi_Sum *= stringNumber[i] - '0';
}
result_Sum += multi_Sum;
}
cout << result_Sum << endl;
return 0;
}
n = 0
for i in range(10,1001):
a = list(str(i))
b = 1
for j in range(0, len(str(i))):
b *= int(a[j])
n += b
print(n)
li=[]
for i in range(100,116):
total=1
for j in str(i):
total*=int(j)
li.append(total)
print(sum(li))
public static void main(String[] args) {
String[] number = new String[991];
int sum = 0;
for(int i=10; i<1001; i++) {
number[i-10] = String.valueOf(i);
}
for(String t : number) {
char[] temp = t.toCharArray();
System.out.println(Arrays.toString(temp));
int mult = 1;
for(char s : temp) {
mult *= Character.getNumericValue(s);
}
sum += mult;
}
System.out.println(sum);
class NumDivider:
def __init__(self):
pass
def doDiv(self,a,b):
sum = 0
for n in range(a,b+1):
l = str(n)
psum = 1
for i in range(0,len(l)):
psum *= int(l[i])
sum += psum
print(sum)
a = 10
b = 15
c = NumDivider()
c.doDiv(a,b)
자바입니다.
public class multiple_sum {
public static int b(int num){
int mult = 0;
for(int i =10;i<=num;i++) {
int a = i;
int b = 0;
int[] count = new int[]{1,1,1,1};
while(a!=0) {
count[b]=a%10;
a/=10;
b++;
}
mult += count[0]*count[1]*count[2]*count[3];
}
return mult;
}
public static void main(String[] args) {
System.out.println(b(1000));
}
}
파이썬입니다. eval function을 몰랐네요, 항상배우고갑니다
sum_nums = 0
for str_num in range(10, 1001):
multi_nums = 1
for digit in str(str_num):
multi_nums *= int(digit)
sum_nums += multi_nums
print(sum_nums)
reduce 를 사용해서 풀었구요, 0이 포함이 될 때는 어차피 +0이 되어서, if 문으로 제외를 했습니다. if 문을 넣었을 경우, 820번, 안넣었을 경우 991번이 나오네요. 조금이라도 필요없는 계산은 걸러봤습니다.
sum = 0
count = 0
for i in range(10, 1001):
if str(i).count("0") != 1:
count += 1
sum += functools.reduce(lambda x, y: x * y, [int(i) for i in str(i)])
print(sum) # 93150
print(count)
answer=0
for x in range(10,1001):
x=str(x)
multiplied=1
for y in x:
multiplied=multiplied*int(y)
answer+=multiplied
print(answer)
result_list = []
for x in range(10,1001):
x = str(x)
if len(x) == 2:
result1 = int(x[0]) * int(x[1])
result_list.append(result1)
elif len(x) == 3:
result2 = int(x[0]) * int(x[1]) * int(x[2])
result_list.append(result2)
elif x == 1000:
pass
print(sum(result_list))
python 3.9.0
mult = 0
for num in range(10,1001):
mult1 = 1
for i in range(len(str(num))) :
mult1 = mult1*int(str(num)[i])
mult += mult1
print(mult)
result = 0
for i in range(10,1001):
if i//1000 == 0:
result += (i//100) * (i%100//10) * (i%100%10)
if i//100 == 0:
result += (i//10) * (i%10)
print(result)
a,b=map(int,input().split(" "))
sum=0
for i in range(a,b+1):
str1=str(i)
re=1
for k in range(len(str1)):
re*=int(str1[k])
sum+=re
print(sum)
package codeDojang;
public class Prac {
public static void main(String[] args) {
int total = 0;
int var = 1;
for(int i=10;i<=1000;i++) {
int tmp=i;
while(tmp/10!=0) {
var *= tmp%10;
tmp/=10;
}
var*=tmp%10;
total+=var;
var = 1;
}
System.out.println(total);
}
}
total = 0
mul = 1
for i in range(10,1001):
for j in str(i):
mul *= int(j)
total += mul
mul = 1
print(total)
public class pro6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=0;
int b=0;
int c=0;
int sum=0;
for(int i=10; i<1001; i++) {
a= i%10;
b= i/10%10;
if(i>=100) {
c= i/100%10;
sum+=a*b*c;
}
else
sum+=a*b;
}
System.out.println("총 합은 " + sum);
}
}
def multiply(start,end):
data = {x : 1 for x in range(start,end+1)}
for i in range(start,end+1):
for j in str(i):
data[int(i)]*=int(j)
return data
int sum=0;
for(int i=10; i<1001; i++) {
if(i<100)
sum += (i/10)*(i%10);
else if(i<1000)
sum += (i/100)*((i%100)/10)*((i%100)%10);
else if(i==1000)
sum += 0;
}
System.out.println(sum);
105번 문제에서 얻은 팁으로 쉽게 작성할 수 있었습니다. 숫자형을 문자열 자료형으로 바꿔 for문을 돌리며 곱셈하니까 간편하네요.!
sum = 0
for i in range(10, 1001):
mul = 1
for j in str(i):
mul = mul * int(j)
sum = sum + mul
print(sum)
c로 풀어보았습니다.
#include <stdio.h>
int main(void)
{
int a, b;
int result_sum = 0;
for (int i = 10; i <= 1000; i++)
{
a = i;
int result = 1;
while ((a/10) >= 1)
{
b = a%10;
a /= 10;
result *= b;
}
result *= a;
result_sum += result;
}
printf("%d", result_sum);
return 0;
}
sum = 0
for i in range(10,1001):
temp = 1
a = list(map(int,list(str(i))))
for j in a:
temp *= j
sum += temp
print(sum)
Python Code
Result =1
Totalsum =0
for i in range(10,1001):
for x in str(i):
Result *= int(x)
Totalsum += Result
Result =1
print("TotalSum: {0}".format(Totalsum))
파이썬 3.9.1입니다.
sum = 0
for num in range(1,1001):
mul = 1
for x in str(num):
mul *= int(x)
sum += mul
print(sum)
numv = list(range(10,1001))
lis = []
for i in numv:
a = str(i)
if len(a)<=2:
q = int(a[0])*int(a[1])
lis.append(q)
elif len(a)<=3:
q = int(a[0])*int(a[1])*int(a[2])
lis.append(q)
elif len(a)<=4:
q = int(a[0])*int(a[1])*int(a[2])*int(a[3])
lis.append(q)
print(sum(lis))
별로 좋지 못한 풀이같다.. eval 이라는 함수를 알아간다..
from functools import reduce
num = list(map(str, range(10,1001)))
result = 0
for i in num:
i_int = list(map(int,list(i)))
result += reduce(lambda x,y: x*y, i_int)
print(result)
def main():
sum = 0
for i in range(10,1001):
N = str(i)
N_sum = 1
for j in N:
N_sum *= int(j)
sum += N_sum
print(sum)
if __name__ == '__main__':
main()
list = []
for i in range(10,1001):
if len(str(i)) == 2:
x = int(str(i)[0]) * int(str(i)[1])
list.append(x)
elif len(str(i)) == 3:
x = int(str(i)[0]) * int(str(i)[1]) * int(str(i)[2])
list.append(x)
print(sum(list))
[파이썬 2020.3]
sum = 0
for num in range(10, 1001):
mul = 1
for i in str(num):
mul *= int(i)
sum += mul
print(sum)
num = []
for i in range(10,1001):
s = list(str(i)) # i 값을 하나 하나 str으로 변환 후 리스트로 만듬
s = str.join("*",s) # s = "*".join(s) # 리스트를 특정 구분자를 이용해 문자열로 변환
num.append(eval(s)) # eval 함수는 문자열로 된 계산식을 숫자형으로 된 계산식으로 해석하여 값을 낸다.
print(sum(num))
result = 0
for i in range(10, 1000+1):
multiple = 1
for j in str(i):
multiple *= int(j)
result += multiple
print(result)
sum = 0
for num in range(10, 1001):
m = 1
for i in str(num):
m *= int(i)
sum += m
print(sum)
[결과]
93150
<파이썬 3>
Python3입니다.
>>> from functools import reduce
>>> def f(start, end):
... def g(n):
... return reduce((lambda x, y: int(x) * int(y)), list(str(n)))
...
... return sum([g(n) for n in range(start, end)])
...
>>> f(10, 16)
15
>>> f(10, 1001)
93150
def makeAns(num):
total = 1
for j in range(len(num)):
total = total * int(num[j])
return total
print(sum([makeAns(str(i)) for i in range(10, 1001)]))
베스트 받은 해법 ㄷㄷㄷ 하네요
def split_multi(start,end):
for i in range(int(start),int(end)+1):
multi=1
for j in str(i):
multi = multi * int(j)
print(multi)
l =[]
for i in range(10,1001):
a = list(str(i))
b = eval('*'.join(a))
l.append(b)
print(sum(l))
eval을 몰라서 한참 고민함..ㅠㅠ
# 숫자간의 곲셈식을 string list로 저장 후, eval실행.
nSum = 0
listComputes = ['*'.join(str(x)) for x in range(10, 1001)]
for strCompute in listComputes:
nSum += eval(strCompute)
print(nSum)
list = []
for j in range(10, 1001):
mult=1
for i in (str(j)):
mult*=int(i)
list.append(mult)
total_sum=0
for i in list:
total_sum += i
print(total_sum)
def num_sum():
start = int(input("시작 숫자 : "))
final = int(input("마지막 숫자 : "))
result = 0
for i in range(start, final + 1):
multiple = 1
for j in str(i):
multiple *= int(j)
result += multiple
return result
print(num_sum())
#codingdojing_multipleNum
#10~1000까지의 각 숫자들을 분해하여 각 자리수의 곱하기의 전체
totalSum = 0
for num in range(10,1001):
eachSum = 1
for c in str(num):
eachSum *= int(c) #각 자리곱하기
totalSum += eachSum
print(totalSum) #93150
b = 1
c = 0
for i in range(10,1001) :
d = str(i)
for a in range(0,len(d)) :
b = int(d[a])*b
c += b
b = 1
print(c)
파이썬으로 작성되었습니다.
ps_array = []
for num in range(10, 16):
num = str(num)
result = 1
if '0' in num:
result = 0
ps_array.append(result)
else:
for n in num:
result *= int(n)
ps_array.append(result)
print(sum(ps_array))
sum=0
for i in range(10,16):
multiplication=1
for j in str(i):
multiplication*=int(j)
sum+=multiplication
print(sum)
result = 0
for n in range(10,1001) :
multyple = 1
for m in str(n) :
multyple *= int(m)
result += multyple
print(result)
st = 10
fn = int(input("10부터 몇까지??"))
C =[]
for i in range(st,fn+1):
i = str(i)
a = len(i)
c = 1
for n in range(a):
c *= int(i[n])
C.append(c)
print(sum(C))
a,b = input('a~ b 까지의 각 숫자를 입력해주시오(두 수 사이는 공백) :').split()
a = int(a)
b = int(b)
count = 0
List_10 = []
List_100 = []
sum_10 = 0
sum_100 = 0
List_count = 0
List_100count = 0
for i in range(a, b + 1):
i = str(i)
if len(i) >= 3: # 세 자리수인 것들
for k in i:
List_100.append(k)
count += 1
List_100count += 1
if count == 3:
count = 0
mult_100 =int(List_100[List_100count - 3])*int(List_100[List_100count - 2])*int(List_100[List_100count - 1])
sum_100 = sum_100 + mult_100
elif len(i) <= 2:
for j in i:
List_10.append(j)
count += 1
List_count += 1
if count == 2:
count = 0
mult_10 = int(List_10[List_count - 2]) * int(List_10[List_count - 1])
sum_10 = sum_10 + mult_10
print(sum_10 + sum_100)
좀 길고 복잡하긴 하지만 해냈습니다..ㅎㅎ
sum=0
for i in range(10,1001):
product=1
for num in str(i):
product *= int(num)
sum += product
print(sum)
fn, sn = map(int, input('10~1000까지 두개의 정수를 입력하시오: ').split())
totals = 0
for en in range(fn, sn+1):
mulnum = 1
for estrnum in str(en):
mulnum *= int(estrnum)
totals += mulnum
print(f'{fn} ~ {sn} 까지의 각 숫자를 분해하여 곱한 전체의 총 합은: {totals}')
result=0
sub=1
for i in range(10,1001):
for j in range(len(str(i))):
sub*=int(str(i)[j])
result+=sub
sub=1
print(result)
static int sum;
static void multi(int x) {
int num = Integer.parseInt((x+"").charAt(0)+"");
for (int i = 1; i < (x+"").length(); i++) {
num *= Integer.parseInt((x+"").charAt(i)+"");
}
sum += num;
}
public static void main(String[] args) {
for(int i = 10; i < 1001; i++) {
multi(i);
}
System.out.println(sum);
}
arr = []
total = 0
for i in range(10,1001):
multi = 1
arr = list(map(int,str(i)))
length = len(arr)
for j in range(length):
multi *= arr[j]
finalmulti = multi
total += finalmulti
print(total)
def solution (a,b) :
d=[]
for k in range(a,b+1) :
c = eval("*".join(str(k)))
d.append(c)
print(sum(d))
solution(10,1000)
// Rust
use std::string::ToString;
fn main() {
let (start, end) = (10, 1000);
let mut total = 0;
for i in start..=end {
let product: u32 = i.to_string().chars()
.map(|c| c.to_digit(10).unwrap())
.product();
total += product;
}
println!("{}", total);
}
total = 0
for i in range(10,1001):
a = []
while i//10 != 0:
a += [i%10]
i = i//10
a += [i%10]
x_product = a[0]
for x in range(len(a)-1):
x_product *= a[x+1]
total += x_product
print(total)
``````{.python}
#10~100 까지
# 10 ==> 1*0 = 0
# 11 ==> 1*1 = 1
# 12 ==> 1*2 = 2
#100 ==> 1*0*0 = 0
#999 ==> 9*9*9 =
sum = 0
for i in range(10,1001):
num = int(i)
if (num <100) :
a = num // 10
b = num % 10
print (num, "를 분리한 결과는", a, b, "입니다")
sum += a*b
print(sum)
elif (num>=100 & num <1000) :
a = num // 100
b = (num %100) //10
c = (num%100) %10
print (num, "를 분리한 결과는", a, b, c, "입니다")
sum += a*b*c
print(sum)
else :
sum += 0
print (sum)
result=[]
for i in range(1,1001):
a = str(i)
a='*'.join(a)
result.append(eval(a))
print(sum(result))
answer = 0
for i in range(10,1001):
count = 1
for i2 in str(i):
count *= int(i2)
answer += count
print(answer) #93150
답보고 eval 이라는 함수 잘알아갑니다~!
total_sum = 0
for i in range(10,1001):
str_int = list(str(i))
int_sum = int(str_int[0]) * int(str_int[1])
total_sum += int_sum
print(total_sum) # 22275
mul=[] for i in range(10,16): li=[] a = 1 for j in str(i): li.append(int(j)) for k in li: a*=k mul.append(a) print(sum(mul))
num = [x for x in range(10,1001)]
result = 0
for i in range(len(num)):
mul = 1
for j in str(num[i]):
mul *= int(j)
result += mul
print(result)
package com.algorithm.algorithmpractice.dojang;
public class To1000 {
public static void main(String[] args) {
int total = 0;
for (int i = 10; i < 1001; i++) {
int row = 1;
int temp_i = i;
while (temp_i > 0){
int temp = temp_i % 10;
temp_i /= 10;
row *= temp;
}
total += row;
}
System.out.println(total);
//# answer : 93150
}
}
절대 String으로 변환하지 않으려고 했읍니당.
a = []
from functools import reduce
for i in range(10,1001):
a[len(a):]=[reduce(lambda x,y : int(x)*int(y), list(str(i)))]
print(sum(a))
num_list = [str(i) for i in range(10,1001)]
sum = 0
for i in range(len(num_list)):
multiply = 1
for k in range(len(num_list[i])):
multiply *= int(num_list[i][k])
sum += multiply
sum
def mul(number):
ans = 1
for i in number:
if i == 0:
return 0
ans *= i
return ans
number_list = []
for number in range(10, 1001):
num = number
x = [int(a) for a in str(num)]
number_list.append(mul(x))
print(sum(number_list))
곱하기 함수를 만든 후 이용했습니다.
def mul_sum(a, b):
muls = []
for i in range(a, b+1):
mul = 1
for j in str(i):
mul *= int(j)
muls.append(mul)
return sum(muls)
ui1 = int(input("각 숫자끼리 곱의 전체 합을 구합니다. 시작 숫자 입력>> "))
ui2 = int(input("끝 숫자 입력>> "))
print(mul_sum(ui1, ui2))
a=[i*j*k for i in range(1,10) for j in range(10) for k in range(10)]
b=[i*j for i in range(0,10) for j in range(10)]
sum(a)+sum(b)
#include<stdio.h>
int main(void)
{
int i, sum = 0;
char str[5];
for (i = 10; i < 1001; i++)
{
sprintf(str, "%d", i);
int j = 0, mul = 1;
while (str[j] != '\0')
{
mul *= ((int)str[j] - 48);
j++;
}
sum += mul;
}
printf("%d\n", sum);
}
c언어입니다.
python
n1 = 10
n2 = 1000
numbers = [x for x in range(n1,n2+1)]
mult = 1 #한 숫자 분해해서 곱한 임시 값
tot_sum = 0
for x in numbers:
for i in range(len(str(x))):
mult *= int(str(x)[i])
tot_sum += mult
mult = 1 #초기화
print(tot_sum)
sum = 0
for i in range(10, 1001):
mul = 1
for j in range(len(str(i))):
mul *= int(str(i)[j])
sum += mul
print(sum)
python
int n = 0;
int result = 0; //결과값
for(int i = 0; i <= 10; i++){
n+=i;
}
for(int i = 1; i <=9 i++){
result+=n * i;
}
System.out.println(result);
java
저는 math 모듈의 prod 라는 숫자를 곱해주는 함수를 이용했습니다. 파이썬 3.8버전부터 사용이 가능하다고 합니다.
한줄로 만들어보았습니다. eval 함수 잘 배워갑니다
print(sum([math.prod([int(n) for n in str(num)]) for num in range(10, 1001) if str(num).find('0') < 0]))
startInt=10
endInt=15
result=0
for i in range(startInt,endInt+1):
if i<100:
result+= (int(str(i)[0])*int(str(i)[1]))
elif i<1000:
result+= (int(str(i)[0])*int(str(i)[1])*int(str(i)[2]))
elif i==1000:
result+= (int(str(i)[0])*int(str(i)[1])*int(str(i)[2])*int(str(i)[3]))
print(result)
자바
package temp;
public class MultipleTentoThousand { public static void main(String[] args) { int ten =10, thou = 1000, n, sum=0;
for (int i = 1; i < 10; i++) {
for (int j = 0; j <10 ; j++) {
sum += i*j;
for (int j2 = 0; j2 < 10; j2++) {
sum += i*j*j2;
}
}
}
System.out.println("10 : "+sum);
}
# eval 생각이 안 나서 pop으로 풀었어요.
result = 0
for i in range(10, 1001):
each_number = list(map(int, str(i)))
mul = 1
while True:
mul = mul * each_number.pop()
if each_number == []:
break
result += mul
print(result)
input_num1 = 10
input_num2 = 1000
sum = 0
for i in range(input_num1, input_num2 + 1):
mul_val = 1
for i in str(i):
mul_val *= int(i)
sum += mul_val
print(sum)
a = input("시작숫자")
b = input("종료숫자")
sum=0
for i in range(int(a),int(b)+1):
mul=1
for j in range(len(str(i))):
mul=mul*int(str(i)[j])
sum=sum+mul
print(sum)
result = 0
for num in range(10, 16):
temp = 1
for n in str(num):
temp *= int(n)
result += temp
print(result)
totalsum=0 multi=1 for i in range(10,1001): multi=1 for x in str(i): multi *= int(x) totalsum += multi
print(totalsum)
sum = 0
for i in range(10, 1001):
num = i
gob = 1
while num > 0:
gob *= (num % 10)
num //= 10
sum += gob
print(sum)
def multipy(num):
total = 1
str_num = str(num)
for digit in str_num:
total *= int(digit)
return total
total_1000 = 0
for i in range(10, 1001):
total_1000 += multipy(i)
print(total_1000)
강의로 배운 코드를 변형해서 만들었습니다
방법1.
from functools import reduce
print(sum([reduce(lambda x,y: int(x)*int(y), str(i)) for i in range(10, 1001)]))
> 93150
방법2.
print(sum([eval('*'.join(str(i))) for i in range(10, 1001)]))
> 93150
result = 0
for i in range(10,1001):
multiple = 1
for j in str(i):
multiple = int(j) * multiple
result += multiple
print(result)
def digitMul(s):
digVal = 1
for i in s:
digVal *= int(i)
return digVal
digSum = 0
for a in range(10,1001):
digSum += digitMul(str(a))
print(digSum)