개인 노트
9278 단어 Python시합 프로그램 설계AtCodertech
감상
a1 완성
A - Tax Included Price
\frac{100+t}{100}A=A+\racc{At}에서 알 수 있듯이 At는 100의 배수를 통과할 때 나타나지 않는 금액이 존재한다.
따라서 N번째 금액은\rac{At}이 1이 되면 A에서 1을 뺀 금액이다.
t, N = map(int, input().split())
A = -(-100 * N // t) # 切り上げの割り算
ans = (100 + t) * A // 100 - 1
print(ans)
B - Village of M People
고찰은 옳았지만 실복에 오류가 있었다.
B_i=\lflowor\rac{A iM} {N}\rflowor로 가정합니다.
B_만약 i가 마이너스 정수가 아니라면, 소수일 수도 있습니다.sum^K{i=1}B_i=M 충족 시 maxi|\rac{B i} {M]-\rac{A i} B를 최소화하기 위해i=\rac{A iM} {N} 이면 됩니다.
이것을 좋은 느낌으로 하고 소수점 이하를 버리는 것이 좋다.
즉, 최초의 모든 Bi를 제거하여 컴퓨팅, fracc {B i} {M] -\racc {A i} {N} 어릴 때부터 M-\sum^K{i=1}B_i 개 Bi에 1만 더하면 돼.
\frac{B i} {M]-\fracc{A i} 의 계산에 오류가 발생할 수 있으므로 Decimal을 사용했습니다.
score 관리가 사전으로 이루어지면, tmp스코어가 중복되는 상황을 고려하지 않았기 때문에 고장이 났을 수도 있다.
from decimal import Decimal
K, N, M = map(int, input().split())
A = list(map(int, input().split()))
ans = []
scores_and_i = []
for i in range(K):
ans.append(A[i] * M // N)
tmp_score = Decimal(ans[-1]) / Decimal(M) - Decimal(A[i]) / Decimal(N)
scores_and_i.append((tmp_score, i))
scores_and_i.sort()
diff = M - sum(ans)
for _, i in scores_and_i[:diff]:
ans[i] += 1
print(*ans)
C - Coprime Set
N=3시의 해는 3개의 수 2, 3, 5 중 2개를 곱한 후의 수(6, 15, 10)다.
이 몇 열은 문제문의 모든 조건을 만족시켰다.
나는 이 몇 열에 조건을 만족시키는 수량을 늘리고 싶다.
조건을 충족시키는 수는 3개의 수 중 2개 이상의 수를 약수로 하고 곧(6,15,10) 중 하나를 약수로 한다.
이 수량은 1 이상 10^4 이하는 2665개로 해결 방안을 얻을 수 있다.
N = int(input())
a, b, c = 2, 3, 5
base_nums = [a * b, b * c, c * a]
now_num = max(base_nums) + 1
ans = list(base_nums)
while len(ans) < N:
if any(now_num % x == 0 for x in base_nums):
ans.append(now_num)
now_num += 1
print(*ans)
Reference
이 문제에 관하여(개인 노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/m193h/articles/20210510mon011626m193harc118텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)