개인 노트
13108 단어 Python시합 프로그램 설계AtCodertech
감상
abc3 완료
업데이트 로그
A - A*B*C
변수는 A, B, C 세 개가 있다
변수를 두 개로 만들고 싶으므로 ABC\leqk를 AB\leq\lflowor K/C\rflowor(\leqK/C)로 변경합니다.
이렇게 하면 C에 대한 전체 탐색을 하는 동시에 O(1)로 각 C의 값인 AB를 구하면 전체적인 계산량은 O(K) 인접 지역이 양호하다.
\lflowor K/C\rflowor를 질적 인수 분해하는 경우 A, B의 조합이 필요합니다.
만약 사전에 각 값에 따라 계산한다면 A, B의 조합은 O(1)가 필요하다
\lflor K/C\rflor\leqK, 범위 내에서 사전 계산
from collections import Counter
from itertools import accumulate
def integer_factorization_list(n: int):
"""
入力された整数nを素因数分解し,素因数が列挙されたリストで返却
Parameters
----------
n : int
素因数分解したい整数
Returns
-------
integer_factorization_list : lst
[素因数]の形で素因数が列挙された素因数分解結果
"""
res = []
for candidate_of_prime in range(2, int(n ** 0.5) + 1):
while n % candidate_of_prime == 0:
n //= candidate_of_prime
res.append(candidate_of_prime)
if n > 1:
res.append(n)
return res
K = int(input())
# K = 2 * 10 ** 5
cumsum = [0]
for a in range(1, K + 1):
primes = Counter(integer_factorization_list(a))
res = 1
for i in primes.values():
res *= i + 1
cumsum.append(res)
# print(a, primes.values())
cumsum = list(accumulate(cumsum))
# print(cumsum)
ans = 0
for c in range(1, K + 1):
ans += cumsum[K // c]
print(ans)
B - A^B^C
자연수의 곱셈을 보면 첫 번째가 순환하는 것을 알 수 있다
이 성질을 사용하려면 A ^D (D = B^C) 의 1위가 필요하다
그러면 D를 요구하고 싶지만 A의 곱셈은 일정한 주기로 순환하기 때문에 그 주기로 D의 잉여치를 얻으면 k가 된다.
A, B, C = map(int, input().split())
a_loop = []
res = A
while str(res)[-1] not in a_loop:
a_loop.append(str(res)[-1])
res *= A
D = pow(B, C, len(a_loop))
# Dを-1しているのはD mod len(a_loop)とa_loopのインデックスが対応してないから
ans = a_loop[(D - 1) % len(a_loop)]
print(ans)
C - String Invasion
오른쪽부터 천천히 하는 게 좋을 것 같아요.
설치 시 abab,aba 등 주의하십시오
자세한 설명은 내일 쓰실 것 같아요.
from collections import Counter
S = input()
ans = 0
between_cnt = Counter(S[-2:])
last = ("", -1)
for i in range(len(S) - 3, -1, -1):
if S[i] == S[i + 1] and S[i] != S[i + 2]:
ans += len(S) - (i + 2) - (between_cnt[S[i]] - 1)
last = S[i]
# print(ans, between_cnt)
between_cnt = Counter()
between_cnt[S[i]] += len(S) - i
else:
between_cnt[S[i]] += 1
print(ans)
Reference
이 문제에 관하여(개인 노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/m193h/articles/20210221sun230417m193harc113텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)