이 페이지는 코딩도장 데이터의 읽기 전용 정적 보관본입니다.

여러 개의 4

문제는 2개입니다. 문제1 네 개의 4로 257을 만드세요. 문제2 다섯 개의 4로 65532를 만드세요. 단, 조건이 있습니다. 이 수들을 만들 때 주어진 개수의 4, 덧셈, 뺄셈, 곱셈, 나눗셈, 거듭제곱만 사용 가능합니다. 조금 생각하면 누구나 맞힐 수 있습니다.

곱셈과 제곱 2^n

2021/01/14 13:04

이준우

18개의 풀이가 있습니다.

import math
def solution(N, number, cnt):
    #N/N and N
    if N == number:
        return 1
    answer = []
    stack = [0]

    pow_ = [(N, str(N))]
    start = 1
    while True:
        r = int(str(N) * start)
        if math.pow(N, r) > number:
            stack.append(set(pow_))
            break
        if math.pow(N, start) == number:
            answer.append("%d^%d" %(N, start))
        pow_.append((math.pow(N, r), "%d^%d" %(N, r)))
        start += 1

    for i in range(2, cnt + 1): #number of N
        arr = {(int(str(N) * i), str(N) * i)}

        for j in range(1, i // 2 + 1):
            for k, k_s in stack[j]: #k = N * j
                for l, l_s in stack[i - j]: #l = N * (i - j)
                    arr.add((k + l, k_s + "+" + l_s))
                    if k > l:
                        arr.add((k - l, k_s + "-" + l_s))
                    else:
                        arr.add((l - k, l_s + "-" + k_s))
                    arr.add((k * l, k_s + "*" + l_s))
                    if k != 0:
                        arr.add((l // k, l_s + "/" + k_s))
                    if l != 0:
                        arr.add((k // l, k_s + "/" + l_s))

        for n, s in arr:
            if number == n and s.count("4") == cnt:
                answer.append(s)
        stack.append(arr)
    return answer

if __name__ == "__main__":
    first_Q = solution(4, 257, 4)
    for i in first_Q:
        print(i)

    second_Q = solution(4, 65532, 5)
    for i in second_Q:
        print(i)

후... 할말하않...

2021/01/20 14:49

김주영

import math
#1 4의 4승 + 4 / 4
print(int(math.pow(4,4) + 4/4))
#2 4의 4승 * 4의 4승 - 4
print(int(math.pow(4,4) * math.pow(4,4) - 4))

2021/01/14 17:03

JohnRay

python 3.8.7입니다.

>>> #문제1
>>> 4 ** 4 + 4 / 4
257.0
>>> #문제2
>>> 4 ** 4 * 4 ** 4 - 4
65532

2021/01/14 21:08

이준우

#include<stdio.h>
#include<math.h>

int main()
{
    int i;

    i=pow(4,4)+4/4;

    printf("4^4+4/4=%d\n",i);

    i=pow(4,4)*pow(4,4)-4;

    printf("4^4*4^4-4=%d",i);

    getch();
    return 0;
}

이건 코딩이라긴 보단 수수깨끼네요

2021/01/15 22:52

June

4 ** 4 + 4 / 4

4**4*4**4-4

2021/01/20 10:44

손우민

관건은 숫자를 키우는 거네요. 거듭제곱을 잘 이용하는게 포인트인 듯 합니다. 우선 순위를 명시하기 위해 괄호를 사용했습니다.

문제1

(4 ** 4) + (4 // 4)

문제2

(4 4) * (4 4) -4

2021/01/24 00:01

형제는못말려

#1. 네개의 4로 257을 만들기

import itertools

calc = ["**","*",'+',"/","-",]

for i in itertools.product(calc,calc,calc): #  리스트 경우의수 만들기
    expr = "".join(["4"+j for j in i]+["4"]) ## 4가 포함된 경우의 수 
     if expr.count("4**4**4") > 0: #큰수 계산 제거(시간절약)
        continue
    sum = eval(expr) # 산식계산
    if sum == 257 or sum == 257.0:
        print(expr,"=",sum )


#2. 다섯개의 4로 65532 만들기

import itertools

calc = ["**","*",'+',"/","-",]

for i in itertools.product(calc,calc,calc,calc): #  리스트 경우의수 만들기
    expr = "".join(["4"+j for j in i]+["4"]) ## 4가 포함된 경우의 수 
    if expr.count("4**4**4") > 0: #큰수 계산 제거(시간절약)
        continue
    sum = eval(expr) # 산식계산
    if sum == 65532 or sum == 65532.0:
        print(expr,"=",sum )

2021/01/25 17:26

이상해라

print('문제 1:',int(4**4+(4/4)))
print('문제 2:',(4**4)*(4**4)-4)

2021/01/30 22:07

BlakeLee

print(4 ** 4 + int(4 / 4))
print((4 * 4) ** 4 - 4)

파이썬 3.9.1

2021/02/05 14:33

김민수

def make257with4():
    """
    257 = 2 ** 8 + 1
    257 = 4 ** 4 + 4/4
    """
    return 4 ** 4 + 4 /4

def make65532with4():
    """
    65532 = 4 * 3 * 43 * 127
    65532 = 4 * 129 * 127
    65532 = 4 * (128 + 1) * (128 - 1)
    65532 = 4 * (2**7 + 1) * (2**7 - 1)
    65532 = 4 * (2**14 - 1)
    65532 = 4 * (4**7 - 1)
    65532 = 4**8 - 4
    65532 = 4**(4+4) - 4
    """
    return 4 ** 4 + 4 ** 4 - 4

2021/04/05 14:13

돈 벌면 뭐하노

num = [4,4,4,4,4]
print(int(num[0]**num[1]+num[2]/num[3]))
print(num[0]**num[1]*num[2]**num[3]-num[4])

2021/04/07 09:12

팀운

q1 = 4**4+4/4
q2 = 4**4**4**4-4

2021/04/25 06:35

농창




#1
from math import *

print((4**4)+(4/4))


#2
print((4*4)**(4)-(sqrt(4)+sqrt(4)))


제곱근을 이용했는데 조건에 맞는지 모르겠네요..

2022/01/30 23:32

양캠부부

(4^4)*(4^4)-4

4^4+4/4)

2022/05/10 17:38

yunjae

dart

import 'dart:math';

void main(List<String> arguments) {
  print(pow(4, 4) + 4 ~/ 4);
  print(pow(4, 4) * pow(4, 4) - 4);
}

2023/01/06 00:16

Noname

print(4**4+(4/4))



print((4*4)**4-4)

2023/03/09 21:06

조랭이떡

using System;
using System.Collections.Generic;

namespace solution2
{
    class Program
    {
        static void Main(string[] args)
        {
            //int N = 257;
            //int trial = 4;
            int N = 65532;
            int trial = 5;

            List<string> list = new List<string>();
            list.Add("없슴");
            makeN(1, 4, "4", N, trial, list);
            if(list.Count == 1)
                makeN(2, Math.Pow(4,4), "4^^4", N, trial, list);
            Console.WriteLine("\n   {0} = {1}", list[list.Count-1], N);
        }

        private static void makeN(int cnt, double sum, string str, int N, int trial, List<string> list)
        {
            if(sum == N && cnt == trial)
            {
                list.Add(str);
                return;
            }
            if (cnt > trial)
                return;

            makeN(cnt + 1, sum * 4, str + " x 4 ", N, trial, list);
            makeN(cnt + 1, sum + 4, str + " + 4 ", N, trial, list);
            makeN(cnt + 1, sum - 4, str + " - 4 ", N, trial, list);
            int tmp = (int)Math.Pow(sum, 4);
            makeN(cnt + 1, tmp, str + "^^4 ", N, trial,list);
            tmp = (int)Math.Pow(4, 4);
            makeN(cnt + 2, sum * tmp, str + " x 4^^4", N, trial,list);
            makeN(cnt + 2, sum + tmp, str + " + 4^^4", N, trial, list);
            makeN(cnt + 2, sum - tmp, str + " - 4^^4", N, trial, list);
            makeN(cnt + 2, sum + 1, str + " + 4/4 ", N, trial,list);            
            makeN(cnt + 2, sum - 1, str + " - 4/4 ", N, trial,list);
        }
    }
}

2023/07/13 13:04

insperChoi

def makeSu(cnt, sum, s):
    global list
    global N
    global su

    if cnt == N and sum == su:
        list.append(s)
        return
    if cnt >= N:
        return

    makeSu(cnt + 1, sum + 4, s + ' + 4')
    makeSu(cnt + 1, sum - 4, s + ' - 4')
    makeSu(cnt + 1, sum * 4, s + ' x 4')
    makeSu(cnt + 1, sum ** 4, s + ' ^^4')
    makeSu(cnt + 2, sum + (4 * 4), s + ' + 4 x 4')
    makeSu(cnt + 2, sum - (4 * 4), s + ' - 4 x 4')
    makeSu(cnt + 2, sum * (4 ** 4), s + ' x 4^^4')
    makeSu(cnt + 2, sum + (4 ** 4), s + ' + 4^^4')
    makeSu(cnt + 2, sum + (4 / 4), s + ' + 4/4')
    makeSu(cnt + 2, sum - (4 / 4), s + ' - 4/4')


list = ['없음']
# su = 257
# N = 4

su = 65532
N = 5

makeSu(1, 4, '4')
print(list[-1] , '= ', su)

2023/07/13 13:26

insperChoi

목록으로