728x90
반응형

난이도가 있는(시간 초과) 수학 문제이다. 0부터 시작해서 제곱 값들을 확인하면

무조건 시간 초과가 나오기 때문에 a보다 크거나 같은 제곱수들만 확인해야 한다. 

a, b = map(int, input().split())
li = [1]*(b-a+1)
for i in range(2, int(b**0.5)+1):
    t = i**2
    for j in range(a//t*t, b+1, t):
        if j-a >= 0 and li[j-a]:
            li[j-a] = 0
print(li.count(1))
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다. 매우 귀찮은 문제였다... end를 잘못 사용해서 10번 정도 틀렸다.

from math import factorial

while 1:
    n = int(input())
    if n == 0:
        break
    _ = input()
    print(f"{n}! --")
    res = str(factorial(n))
    li = [res.count(str(i)) for i in range(10)]
    for i in range(2):
        for j in range(5):
            if j == 0:
                print("   (%d)%5d" % (5*i + j, li[5*i + j]), end='')
            else:
                print("    (%d)%5d" % (5*i + j, li[5*i + j]), end = '')
        print(' ')
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

이 문제에서 그냥 /을 사용해서 나눠주면 실제 결괏값과 10**(-20) 정도의 차이는 웬만하면 나게 돼서

만점을 못 받으므로 직접 나누기 기능을 구현해줘야 한다.

a, b = map(int, input().split())
print(a//b, end='')
if a%b:
    i = 0
    print('.', end='')
    while a%b and i < 1000: 
        a = a%b * 10
        i += 1
        print(a//b, end='')

 

728x90
반응형
728x90
반응형

단순 수학 문제이다. 2061 좋은 암호와 똑같은 문제 같다.

마찬가지로 에라토스테네스의 체를 사용하면 쉽게 풀 수 있다.

P, K = map(int, input().split())
li = [1]*K
for i in range(2, int(K**0.5)+1):
    if li[i] == 1:
        for j in range(i+i, K, i):
            li[j] = 0
prime = [i for i in range(2, K) if li[i] == 1]

good, bad = 1, 0
for n in prime:
    if P%n == 0:
        good, bad = 0, n
        break
print("GOOD" if good else f"BAD {bad}")
728x90
반응형
728x90
반응형

단순 수학 문제이다. 파이썬은 큰 수들을 신경 쓸 필요가 없어서 참 편하다

for i in range(int(input())):
    a = int(input())
    b = int(input())
    if i != 0:
        print()
    print(a//b)
    print(a%b)
728x90
반응형
728x90
반응형

10**-4보다 작은 분수는 괜찮은데 그거보다 작은 분수는

1e-05와 같은 방식으로 저장이 되어있어서 따로 처리를 해줄 필요가 있다.

N = int(input())
s = "%.300f" % 2 ** -N
end = len(s)
for i in range(end-1, 1, -1):
    if s[i] != '0':
        end = i
        break
print(s[:end+1])
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다. 

for _ in range(3):
    N = int(input())
    li = [int(input()) for i in range(N)]
    if sum(li) == 0:
        print("0")
    elif sum(li) > 0:
        print("+")
    else:
        print("-")

위의 코드가 맞긴 하는데 그냥 제출하면 시간 초과가 나온다.

stdin.readline를 사용해서 입력을 빠르게 받아오면 해결된다.

from sys import stdin

for _ in range(3):
    N = int(stdin.readline())
    li = [int(stdin.readline()) for i in range(N)]
    if sum(li) == 0:
        print("0")
    elif sum(li) > 0:
        print("+")
    else:
        print("-")

 

728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

a, b = map(int, input().split())
c, d = divmod(a, b)
if a != 0 and b < 0:
    c, d = c+1, d-b
print(c)
print(d)
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

이 문제도 마찬가지로 파이썬은 오버플로우가 없으므로 그냥 입력받아서 곱한 결과를 출력해주면 된다.

print(sum(map(int, input().split())))
728x90
반응형
728x90
반응형

단순 수학? 출력? 문제이다.

파이썬은 오버플로우가 없어서 그냥 바로 입력 받고 나머지를 출력해주면 된다.

print(int(input())%20000303)
728x90
반응형
728x90
반응형

단순 사칙연산 문제이다.

파이썬은 오버플로우가 없어서 그냥 곱한 것을 출력해주면 된다.

n1, n2 = map(int, input().split())
print(n1*n2)
728x90
반응형
728x90
반응형
total = int(input())
d = int(input())
Natalia = total//2 - d//2
Klaudia = total - Natalia
print(Klaudia)
print(Natalia)

문제가 폴란드어로 안돼 있어서 번역기를 돌려서 풀었다ㅋㅋㅋ

간단한 사칙연산 문제이다.

 

 

 

728x90
반응형
728x90
반응형

python3에는 오버플로우가 없어서 엄청 큰 수가 들어와도 따로 처리해줄 필요가 없다.

그냥 그대로 출력해주면 된다.

n, m = map(int, input().split())
print(n//m)
print(n%m)
728x90
반응형

+ Recent posts