โ 1676 ํฉํ ๋ฆฌ์ผ 0์ ๊ฐ์ โ
๐ง๐ผโ๏ธ ๋ค์์๋ถํฐ ๊ฑฐ๊พธ๋ก ์ผ์ผ์ด 0์ ๊ฐ์๋ฅผ ๋ฌธ์ ๋๋ก ์ฐพ๋ brute-force
N = int(input())
fac = 1
for i in range(N, 0, -1):
fac *= i
cnt = 0
for num in str(fac)[::-1]:
if num == '0':
cnt += 1
else:
break
print(cnt)
๐ง๐ผโ๏ธ ๊ทธ๋ฌ๋, ์ํ์ ์ผ๋ก ์ ๊ทผํด์ brute-force๊ฐ ์๋ ์ํ ํ์ด๋ก ์๊ฐ์ ๋ ๋จ์ถํ์๋ฉด,
๐ง๐ผโ๏ธ ํฉํ ๋ฆฌ์ผ ๊ฒฐ๊ณผ ๋์ 0์ ๊ฐ์ → 10์ผ๋ก ๋๋์ด์ง๋ ํ์์ ๊ฐ์ → 5์ 2์ ๊ฐ์ → 5์ ๊ฐ์
โ 10์ผ๋ก ๋๋์ด๋จ์ด์ง๋ค๋ฉด ๋์ 0์ด 1๊ฐ, 100์ผ๋ก ๋๋์ด๋จ์ด์ง๋ค๋ฉด ๋์ 0์ด 2๊ฐ, ์ฆ ๋์ 0์ ๊ฐ์๋ 10์ผ๋ก ๋๋์ด์ง๋ ํ์์ ๊ฐ์
โก 10์ 2*5๋ก ๊ตฌ์ฑ๋๋ฏ๋ก, 2์ 5๋ฅผ ์์ผ๋ก ํ ๊ฐ์๊ฐ ๋ช ๊ฐ์ธ์ง๋ฅผ ๋ปํจ
โข 2๋ 5์ ๋นํด ๋ฌด์ํ ๋ง์ผ๋ฏ๋ก ์ฐ๋ฆฌ๋ 5์ ๊ฐ์๋ง ๊ตฌํ๋ฉด ๋จ
โฃ ์ฆ, 5๋ฅผ ๊ณฑํ๋ฉด ๋์ 0์ด 1๊ฐ ์ฆ๊ฐ, 10์ ๊ณฑํ๋ฉด 0์ด 2๊ฐ ์ฆ๊ฐ, ~ ๊ทธ๋ฌ๋ 5์ ์ ๊ณฑ์์ ๋ฐฐ์ - 25์ ๋ฐฐ์, 125์ ๋ฐฐ์ ๋ฑ๋ฑ์ ๊ณฑํ๋ฉด, ๊ณฑํ ๋ 5๊ฐ ๊ฐ๊ฐ 2๋ฒ, 3๋ฒ์ด๋ ๊ณฑํด์ง๋ฏ๋ก 5์ ์ ๊ณฑ์ ๋ฐฐ์๋ง ์ฃผ์ (625๋ถํฐ๋ ๋ฌธ์ ์กฐ๊ฑด N <= 500์ ์ํด ์๊ด์์)
๐ง๐ผโ๏ธ ์๊ณ ๋ฆฌ์ฆ ํ๋ฆ
โ 5๋ก ๋๋ ๋ชซ ๋ํ๊ธฐ (๋ฑ 5๊ฐ 1๋ฒ ๊ณฑํด์ง๋ ํ์ ์นด์ดํธ)
โก 25๋ก ๋๋ ๋ชซ ๋ํ๊ธฐ (25 ๋ฐฐ์๋ 5๊ฐ ์ต์ 2๋ฒ ์ด์ ์๊ณ , ์ โ ์์ 5์นด์ดํธ ํ์ผ๋ฏ๋ก 25๊ฐ 1๋ฒ ๊ณฑํด์ง๋ ํ์๋ง ์นด์ดํธ)
โข 125๋ก ๋๋ ๋ชซ ๋ํ๊ธฐ (๋ง์ฐฌ๊ฐ์ง๋ก 125๊ฐ 1๋ฒ ๊ณฑํด์ง๋ ํ์๋ง ์นด์ดํธ)
โฃ 625๋ก ๋๋ ๋ชซ ๋ํ๊ธฐ ~~ ๋ฑ๋ฑ (๋ฌธ์ ์์ 500๊น์ง์ด๋ฏ๋ก ์ ์ฉ x)
N=int(input())
print(N//5+N//25+N//125)
๐ง๐ผโ๏ธ ์๊ณ ๋ฆฌ์ฆ ํ๋ฆ → ์ผ๋ฐํ
→ 5 - 25 - 125 - 625 ~ 5์ ์ ๊ณฑ์๊ฐ ์ด์ ์ ๊ณฑ์์ 5๋ฐฐ์ธ ์ฑ์ง์ ์ด์ฉํ๋ค
ex) ์๋ฅผ ๋ค์ด 5๋ก ๋๋ ๋ชซ์ด 0์ด ์๋๋ผ๋ฉด, ํด๋น ๋ชซ์ 5๋ฅผ ๋ ๋๋ ๋ชซ์ด 0์๋ ๊ฒฝ์ฐ 25์ด์์์ ๋ปํ๋ค. ์ด ์ฑ์ง์ ์ด์ฉํด ์๋์ ๊ฐ์ด while๋ฌธ ์์ฑ ๊ฐ๋ฅ
N=int(input())
cnt=0
while N>4:
cnt+=N//5
N//=5
print(cnt)
โ 24313 ์๊ณ ๋ฆฌ์ฆ ์์ - ์ ๊ทผ์ ํ๊ธฐ 1 โ
a1, a0 = map(int, input().split())
c = int(input())
n0 = int(input())
if a1 == c:
if -100<= a0 <= 0:
print(1)
else:
print(0)
elif a1 < c:
if n0 >= (a0/(c-a1)):
print(1)
else:
print(0)
else:
print(0)
๐ง๐ผโ๏ธ ํน์ ์ํฉ์์ O-ํ๊ธฐ๋ฒ์ ๋ง์กฑํ๋ ์ง ๋ฌป๋ ๋ฌธ์ ์ด๋ค.
โ f(n) = a1n + a0 (0<=|ai|<=100)
โก g(n) = n
๐ง๐ผโ๏ธ a1,a0,c๊ฐ ๋ชจ๋ ์ฃผ์ด์ง ์ํ์์ ๋ถ๋ฑ์์ ์ ๋ฆฌํ๋ฉด n(c-a1)>=a0
๐ง๐ผโ๏ธ
โ c = a1 → a0<=0์ผ ๊ฒฝ์ฐ O-ํ๊ธฐ๋ฒ์ ๋ง์กฑํด์ 1 ์๋๋ฉด 0
โก c > a1
→ ๋ถ๋ฑํธ๋ฅผ ์ ๋ฆฌํ๋ฉด n<=(a0/(c-a1))
→ n<=n0๋ฅผ ๋ง์กฑํด์ผ ํ๋ฏ๋ก (a0/(c-a1))>=n0์ด๋ฉด O-ํ๊ธฐ๋ฒ์ ๋ง์กฑํด์ 1, ์๋๋ฉด 0
โข c < a1
→ ์ โก์ ๋ถ๋ฑํธ๊ฐ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ๋๋ฏ๋ก n0๋ณด๋ค ํฐ ๋ชจ๋ n์ด ๋ง์กฑํ ์ ์์. ๋ฐ๋ผ์ ์ค๋ก์ง 0๋ง ๊ฐ๋ฅ
โ 24314 ์๊ณ ๋ฆฌ์ฆ ์์ - ์ ๊ทผ์ ํ๊ธฐ 2 โ
a1,a0=map(int, input().split())
c=int(input())
n0=int(input())
if a1==c:
if a0>=0:print(1)
else:print(0)
elif a1>c:
if n0>=(a0/(c-a1)):print(1)
else:print(0)
else:print(0)
โป ์ 24313 ๋ฌธ์ ์ ๋ถ๋ฑํธ ๋ฐฉํฅ๋ง ๋ฐ๋ โป
โ 1193 ๋ถ์์ฐพ๊ธฐ โ
X=int(input())
num=(((8*X+1)**(1/2)-1)/2)
if num==int(num):
n = int(num -1)
else:
n = int(num)
order=X-((n)*(n+1)//2)
if (n+2)%2==0:
print(str(n+2-order)+'/'+str(order))
else:
print(str(order)+'/'+str(n+2-order))
๐ง๐ผโ๏ธ
โ ๋๊ฐ์ ๋ฐฉํฅ์ผ๋ก ๋ถ์ + ๋ถ์์ ํฉ์ด 1 → 2 → 3 → 4 ํํ๋ก ์ปค์ง๋ ๊ท์น์ ์ฌ์ฉ
โก ์์ ๋ชจ๋ ๋๊ฐ์ ๋ฐฉํฅ์ ๊ฐ์๋ฅผ n์ด๋ผ ํ๋ฉด
→ if๋ฌธ์ผ๋ก num์ผ๋ก ์ ๋ถ๋ฑ์์ n ๊ฐ์ ๊ตฌํ๋ค.
๐ง๐ผโ๏ธ๊ทธ๋ ๋ค๋ฉด ๋๊ฐ์ ๋ฐฉํฅ์ ์ผ์ ํ ๋ถ์+๋ถ๋ชจ์ ํฉ์ n+2
โข ๋ถ์+๋ถ๋ชจ์ ํฉ์ด ์ง์์ธ์ง ํ์์ธ์ง์ ๋ฐ๋ผ ๊ฒฐ๊ณผ ์ถ๋ ฅํ๋ฉด ๋!
๐ง๐ผโ๏ธ๋ค๋ฅธ ํ์ด
X=int(input())
num_of_diagonal_lines=1
cum_num_of_diagonal_lines=1
before_cum_num_of_diagonal_lines=0
while cum_num_of_diagonal_lines < X:
before_cum_num_of_diagonal_lines=cum_num_of_diagonal_lines
cum_num_of_diagonal_lines+=(num_of_diagonal_lines+1)
num_of_diagonal_lines+=1
order = X -before_cum_num_of_diagonal_lines
total=num_of_diagonal_lines+1
if total%2==1:
print(f'{order}/{total-order}')
else:
print(f'{total-order}/{order}')
→ ์ง์ ๋๊ฐ์ ๊ฐ์๋ฅผ ๋์ ์ผ๋ก ๋ํ ๊ฒ๊ณผ / ํ์ฌ ๋๊ฐ์ ์ ๊ฐ์๋ฅผ while๋ฌธ์ผ๋ก ์ ๋ฐ์ดํธํ๋ฉฐ ์ต์ข ์ ์ผ๋ก order์ total์ ๊ตฌํ๊ณ ๋ฐ๋ก ์ถ๋ ฅ!
→ ๋์ ์ผ๋ก ๋ํด๊ฐ๋ add upํ๋ ์ฌ๋ฌ ๋ณ์๋ฅผ while๋ฌธ์ผ๋ก updateํ๋ค๋ ์ ์ฃผ์!
โ 13345 Completing the Square โ
ax,ay=map(int,input().split())
bx,by=map(int,input().split())
cx,cy=map(int,input().split())
d1,d2,d3=(ax-bx)**2+(ay-by)**2,(ax-cx)**2+(ay-cy)**2,(bx-cx)**2+(by-cy)**2
if d1>d2: #max d1
print(ax+bx-cx,ay+by-cy)
elif d2>d3: #max d2
print(ax+cx-bx,ay+cy-by)
else: #max d3
print(cx+bx-ax,cy+by-ay)
๐ง๐ผโ๏ธ ์ ์ฌ๊ฐํ์ ์ธ ๊ผญ์ง์ ์ ์ขํ๊ฐ ์ฃผ์ด์ง ์ํ์์ ๋๋จธ์ง ๊ผญ์ง์ ์ x, y ์ถ๋ ฅ ๋ฌธ์ . ์ธ ๊ผญ์ง์ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ํ, ์ต๋ ๊ฑฐ๋ฆฌ์ ์๋ ๋ ์ ์ด ์ ์ฌ๊ฐํ์ ๋๊ฐ์ ์ ์ด๋ฃจ๋ ๋ ์ ์ด๋ฏ๋ก, ๋ ์ ์ ํฉ์ ๋๋จธ์ง ๊ผญ์ง์ ์ ๋บ ์ขํ๊ฐ ์ถ๋ ฅํ๊ณ ์ ํ๋ x, y
: ์ ์ฌ๊ฐํ์ ์ธ ๊ผญ์ง์ ์ ์ขํ๋ง ์๋ฉด ๋ ๋๊ฐ์ ์ ์ค์ ์ ์ผ์นํ๋ค๋ ์ฑ์ง์ ์ด์ฉํด ๋๋จธ์ง ํ ๊ผญ์ง์ ์ ์ขํ๋ ์์ ๊ฐ์ด ์ ์ ์๋ค.
โ 15803 PLAYERJINAH'S BOTTLEGROUNDS โ
coordinates=[]
for _ in range(3):
x,y=map(int,input().split())
coordinates.append((x,y))
one,two,three=coordinates[0],coordinates[1],coordinates[2]
if (two[0]!=one[0]) and (three[0]!=one[0]) and (two[0]!=three[0]):
s1,s2,s3=(two[1]-one[1])/(two[0]-one[0]),(three[1]-one[1])/(three[0]-one[0]),(three[1]-two[1])/(three[0]-two[0])
if s1==s2==s3:
print('WHERE IS MY CHICKEN?')
else:
print('WINNER WINNER CHICKEN DINNER!')
else:
a,b,c=one[0],two[0],three[0]
if len(set([a,b,c])) == 1:
print('WHERE IS MY CHICKEN?')
else:
print('WINNER WINNER CHICKEN DINNER!')
๐ง๐ผโ๏ธ ์ธ ์ ์ด ํ ์ง์ ์ ์ด๋ฃจ๋ ์ง ์์๋ณด๋ ์ ํ. A,B,C ์ธ ์ ์ด ์๋ค๋ฉด A์ B๋ฅผ ์๋ ์ง์ ์ ๊ธฐ์ธ๊ธฐ, B์ C๋ฅผ ์๋ ์ง์ ์ ๊ธฐ์ธ๊ธฐ, A์ C๋ฅผ ์๋ ์ง์ ์ ๊ธฐ์ธ๊ธฐ ์ด 3๊ฐ์ ๊ธฐ์ธ๊ธฐ๊ฐ ๋ชจ๋ ๋์ผํ๋ฉด ํ ์ง์ . ๋์ผํ์ง ์๋ค๋ฉด ํ ์ง์ ์ ์์ง ์๋ค๊ณ ๋งํ ์ ์๋ค. ์ด ๋, ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํ ๋ ๋ถ๋ชจ๊ฐ 0์ด ๋๋ ๊ฒฝ์ฐ๋ง ์ฃผ์. ๋ถ๋ชจ๊ฐ 0์ด ๋ ๊ฒฝ์ฐ, ์ฆ ์ธ ์ ์ค x์ขํ๊ฐ ๋์ผํ ์์ด ์กด์ฌํ ๊ฒฝ์ฐ, ์ธ ์ ์ x์ขํ๊ฐ ๋ชจ๋ ๋์ผํ ๊ฒฝ์ฐ๋ง ์ง์ . ์๋ ๊ฒฝ์ฐ๋ ์ง์ x
โ 1358 ํํค โ
import sys
input=sys.stdin.readline
W,H,X,Y,P=map(int,input().split())
ans=0
for _ in range(P):
x,y=map(int,input().split())
if X<=x<=X+W and Y<=y<=Y+H:
ans+=1
else:
#centers of circles each: (X,Y+H/2) (X+W,Y+H/2)
if ((x-X)**2 + (y-(Y+(H/2)))**2)<=(H/2)**2:
ans+=1
else:
if ((x-(X+W))**2 + (y-(Y+(H/2)))**2)<=(H/2)**2:
ans+=1
print(ans)
๐ง๐ผโ๏ธ ์ฃผ์ด์ง ์ ์ด ์ง์ฌ๊ฐํ์ ์๋ ์ง์ ์ฌ๋ถ๋ (x,y)์ x๊ฐ X์ X+W ์ฌ์ด, y๊ฐ Y์ Y+H ์ฌ์ด์ ์๋ ์ง ํ์ธ
๐ง๐ผโ๏ธ ์ ์์ ์๋ ์ง์ ์ฌ๋ถ๋ (x,y)๊ฐ ๊ฐ ์์ ์ค์ฌ๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ ๋ฐ์ง๋ฆ ์ดํ์ธ์ง ํ์ธ
โ 1064 ํํ์ฌ๋ณํ โ
import sys
xa,ya,xb,yb,xc,yc=map(int,input().split())
AB=((xb-xa)**2+(yb-ya)**2)**(1/2)
BC=((xb-xc)**2+(yb-yc)**2)**(1/2)
AC=((xc-xa)**2+(yc-ya)**2)**(1/2)
#check if 3 aligned in one line
if xa==xb==xc:
print(-1)
sys.exit()
elif ya==yb==yc:
print(-1)
sys.exit()
else:
if xa==xb:
slope1=0
else:
slope1=(ya-yb)/(xa-xb)
if xc==xb:
slope2=0
else:
slope2=(yc-yb)/(xc-xb)
if slope1==slope2:
print(-1)
sys.exit()
else:
print(max(AB*2+BC*2,BC*2+AC*2,AB*2+AC*2)-min(AB*2+BC*2,BC*2+AC*2,AB*2+AC*2))
๐ง๐ผโ๏ธ ํํ์ฌ๋ณํ์ ์ด๋ฃจ์ง ์๋ ๊ฒฝ์ฐ๋ง ์๊ฐํด์ฃผ๋ฉด ๋๋ค. ์ธ ์ ์ด ๋ชจ๋ ์ผ์ง์ ์ ์ด๋ฃจ๋ ๊ฒฝ์ฐ๋ ํํ์ฌ๋ณํ์ด ๋ ์ ์๋ค. ์ด ๋ ์ธ ์ ์ด ๋ชจ๋ y์ถ์ ์๋ ๊ฒฝ์ฐ / ๋ชจ๋ x์ถ์ ์๋ ๊ฒฝ์ฐ / ํด๋น ๋ ์ผ์ด์ค๊ฐ ์๋ ์ผ์ง์ ์ ์๋ ๊ฒฝ์ฐ ๊ฐ๊ฐ ํ๋ณ
๐ง๐ผโ๏ธ ์ธ ์ ์ด ๋ชจ๋ ์ผ์ง์ ์ ์์ง ์๋ค๋ฉด ํํ์ฌ๋ณํ์ ๋ง๋ค ์ ์์ผ๋ฏ๋ก, ์ธ ๊ฐ์ ์ ์ A,B,C๋ผ๊ณ ํ์ ๋ ๋ง๋ค ์ ์๋ ํํ์ฌ๋ณํ์ (1) AB,BC๋ฅผ ๋ณ์ผ๋ก / (2) AB, AC๋ฅผ ๋ณ์ผ๋ก / (3) BC,AC๋ฅผ ๋ณ์ผ๋ก ํ๋ ์ธ ๊ฐ์ case, ์ ๋ถ ๊ธธ์ด ๊ณต์์ผ๋ก ๊ตฌํด ์ต๋๊ฐ, ์ต์๊ฐ ์ฐจ์ด ๋ฐ๋ก ์ถ๋ ฅํ๋ฉด ๋
โ 1748 ์ ์ด์ด ์ฐ๊ธฐ 1 โ
N=input()
l=len(N)
ans=0
start=9
for i in range(1,l):
ans+=start*i
start*=10
if l!=1:
remain=int(N)-9*(int('1'*(l-1)))
print(ans+remain*(l))
else:
print(int(N))
๐ง๐ผโ๏ธ ์ ๋ ฅํ N์ ์๋ฆฌ์๋ฅผ l์ด๋ผ ํ๋ค๋ฉด l-1๊น์ง์ ์์๋ฆฌ ๋ชจ๋ ์๋ฅผ ๋ํ๊ณ , l์๋ฆฌ ์๋ ๋จ์ ์ซ์๋งํผ๋ง ๊ณฑํด์ค์ ์ต์ข ์ ์ผ๋ก ๋ํด์ฃผ๋ฉด ๋.
โ 30002 Joon Paberil โ
N=int(input())
near=int(N**(1/2))**2
if near%2==0:
start=(1,int(near**(1/2))+1)
else:
start=(int(near**(1/2))+1,1)
diff=N-near
if diff <= near**(1/2):
if near%2==0:
print(start[0]+diff,start[1])
else:
print(start[0],start[1]+diff)
else:
if near%2==0:
print(1+int(near**(1/2)),start[1]-(diff-int(near**(1/2))))
else:
print(start[0]-(diff-int(near**(1/2))),1+int(near**(1/2)))
๐ง๐ผโ๏ธ ๊ท์น์ฑ์ ํ์ธํ๊ณ , ์ ๋ ฅํ N์ด๋ผ๋ ์ซ์๊ฐ ์กด์ฌํ๋ ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ์ ํฌ๊ธฐ๋ฅผ ๋จผ์ near๋ก ํ์ธ. near๊ฐ ํ์ / ์ง์์ ๋ฐ๋ผ ๊ฐ๊ฐ ์์ํ๋ start ๋ฒํธ ํ์ธ. ๊ทธ๋ฆฌ๊ณ ์ฐจ์ด diff๊ฐ near์ ์ ๋ฐ๋ถ์ธ์ง ํ๋ฐ๋ถ์ธ์ง์ ๋ฐ๋ผ ๋ถ๊ธฐ ๋๋์ด์ ์ํ ๊ท์น์ฑ ์ฐพ๊ณ ์ฝ๋ ์์ฑ. ๊ท์น๋ง ์ฐพ์ผ๋ฉด ๋๋ค.
โ 30020 ์น์ฆ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ 2 โ
import sys
input=sys.stdin.readline
A,B=map(int,input().split())
if A<=B:print('NO')
else:
diff=A-B
if diff>B:print('NO')
else:
print('YES')
print(diff)
for i in range(diff):
if i != (diff-1):
print('aba')
else:
b_cnt=(B-(diff-1))
print('ab'*b_cnt+'a')
๐ง๐ผโ๏ธ ํ ๊ฐ์ ์น์ฆ๋ฒ๊ฑฐ๋ฅผ ๋ง๋ค ๋ ํจํฐ์ ๊ฐ์๋ฅผ a, ์น์ฆ์ ๊ฐ์๋ฅผ b๋ผ ํ๋ฉด ๋ฌด์กฐ๊ฑด a = b + 1์ด์ด์ผ ํ๋ค. ๋ฐ๋ผ์ A(a์ ํฉ)์ B(b์ ํฉ)์ ๋ณด๋ฉด, A-B๊ฐ ๊ณง ๋ง๋ค ์ ์๋ ์น์ฆ๋ฒ๊ฑฐ์ ๊ฐ์. ๋ง์ฝ, B>=A์ด๊ฑฐ๋, A-B์ธ ๋ง๋ค ์ ์๋ ์น์ฆ๋ฒ๊ฑฐ์ ๊ฐ์๊ฐ ์น์ฆ์ ๊ฐ์์ธ B๋ณด๋ค ํฌ๋ค๋ฉด, ์ด๋ ๊ณง A-B๊ฐ์ ์น์ฆ๋ฒ๊ฑฐ์ ๊ฐ๊ฐ ์น์ฆ 1๊ฐ์ฉ์ ๋ฃ์ ์ ์๋ค๋ ๋ป์ด๋ค. ๋ฐ๋ผ์ ํด๋น ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ diff-1๊ฐ์๋งํผ aba๋ฅผ ๋ง๋ค๊ณ , ๋๋จธ์ง 1๊ฐ๋ ๋จ์ b count๋ก b๋ฅผ ๊ตฌ์ฑํ๊ณ a๋ฅผ ์๋ค์ ๋ฃ์ด์ ์น์ฆ๋ฒ๊ฑฐ๋ฅผ ๋ง๋ค ์ ์๋ค. (๊ฐ๋ฅํ ๊ฒฝ์ฐ ์๋ฌด๊ฑฐ๋ ์ถ๋ ฅ ๊ฐ๋ฅํ๋ฏ๋ก)
โ 9471 ํผ์ฌ๋ ธ ์ฃผ๊ธฐ โ
import sys
input=sys.stdin.readline
for _ in range(int(input())):
N,M=map(int,input().split()) #M>=2
bef1,bef2 = 1,1
for i in range(M**2):
cur = (bef1+bef2)%M
if bef2==cur==1:
print(N,i+1)
break
else:
bef1=bef2
bef2=cur
๐ง๐ผโ๏ธ ํผ๋ณด๋์น ์์ด์์ mod m์ ์งํํ์ ๋, ๋ชจ๋ mod m์ผ๋ก ์งํํ ๋๋จธ์ง๋ ๊ท์น ์ฃผ๊ธฐ์ฑ์ ๊ฐ๋๋ค(ํผ์ฌ๋ ธ ์ฃผ๊ธฐ ์ฑ์ง). ๋ฐ๋ผ์ ๋งจ ์์ mod m ๊ฒฐ๊ณผ 1 1์ ์ธ์ ๊ฐ ๋ฌด์กฐ๊ฑด ๋๊ฐ์ด ์งํ๋๋ฉฐ, ๋ธ๋ฃจํธํฌ์ค๋ก 1 1์ด ๋ ๋์์ ๋๊น์ง์ ์ฃผ๊ธฐ๋ฅผ ๊ตฌํด์ ์ถ๋ ฅํ๋ฉด ๋๋ค. mod m์์ ๋ฐ๋ก ์๊ณผ ํ์ฌ์ mod m ์์์ ๊ฐ๋ฅ ๊ฐ์๋ ๋น๋๊ธฐ ์ง์ ์๋ฆฌ(0 ~ m-1 (mod m)์ด ์๊ณผ ํ์ฌ ๊ฐ๋ฅ ๊ฐ์, ์ฆ m*m์ผ๋ก m^2)์ ์ํด ์ต๋ m^2์ด๋ฏ๋ก m^2๊น์ง๋ง ๋๋ฆฌ๋ฉด ๋๋ค.
โ 2740 ํ๋ ฌ ๊ณฑ์ โ
import sys
input=sys.stdin.readline
N,M=map(int,input().split())
A=[]
for _ in range(N):
A.append(list(map(int,input().split())))
B=[]
M,K=map(int,input().split())
for _ in range(M):
B.append(list(map(int,input().split())))
ans=[]
for i in range(N):
ans=[]
for k in range(K):
n=0
for j in range(M):
n+=(A[i][j]*B[j][k])
ans.append(n)
print(*ans)
๐ง๐ผโ๏ธ NxM ํ๋ ฌ๊ณผ MxK ํ๋ ฌ์ ๊ณฑ ๊ฒฐ๊ณผ๋ NxK ํ๋ ฌ๋ก ๋์จ๋ค. ๋ฐ๋ผ์ for i in range(N)์ผ๋ก ๋๋ฆฌ๊ณ , for k in range(K)๋ก ๋๋ฆฐ ๋ค์, ์ค๊ฐ ์ซ์ for j in range(M)์ ๋๋ฆฌ๋ฉด ๋๋ค. ์๋ ํ๋ ฌ ๊ณฑ ๊ทธ๋ฆผ ์ฐธ์กฐ
๐ง๐ผโ๏ธ
(1) i๊ฐ 0์ผ๋๋ถํฐ N-1์ผ ๋๊น์ง, ์ฒซ๋ฒ์งธ ํ๋ ฌ์ ํ์ ์์์๋ถํฐ ๋๋ค.
(2) ์ฒซ๋ฒ์งธ ํ๋ ฌ์ ํน์ iํ์ผ ๋, ๋๋ฒ์งธ ํ๋ ฌ์ ์ฒซ๋ฒ์งธ ์ด๋ถํฐ ๋ง์ง๋ง ์ด๊น์ง ๋๋ค(k๊ฐ 0์ผ๋๋ถํฐ k-1์ผ๋๊น์ง)
(3) ์ฆ, ์ฒซ๋ฒ์งธ ํ๋ ฌ์ ํน์ iํ(N)์ผ ๋ & ๋๋ฒ์งธ ํ๋ ฌ์ ํน์ k์ด(K)์ผ ๋: iํ์ m๋ฒ์งธ ์์์ k์ด์ m๋ฒ์งธ ์์๋ฅผ ์๋ก ๊ณฑํด๋๊ฐ ํฉ์ ๊ฒฐ๊ณผ ํ๋ ฌ์ ์์๋ก ๋ฐฐ์น
๐ง๐ผโ๏ธ ํ๋ ฌ ๊ณฑ ์ฝ๋ ์์ฑ ์, NxM ํ๋ ฌ๊ณผ MxKํ๋ ฌ ๊ณฑ ํํ๋ ์ฒซ๋ฒ์งธ ํ๋ ฌ์ ํ๊ณผ ๋๋ฒ์งธ ํ๋ ฌ์ ์ด์ ๋๋ฉด์(์ด์ค ๋ฐ๋ณต๋ฌธ), M๊ฐ์ ๊ณฑ ํฉ์ (์ผ์ค ๋ฐ๋ณต๋ฌธ) ์๋ก์ด ํ๋ ฌ์ ์์๋ก ๋ง๋ค๋ฉด ๋๋ค.
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Binary Search Intermediate I - 9 Solvedโ (0) | 2022.12.07 |
---|---|
โ Greedy Intermediate I - 20 Solvedโ (0) | 2022.12.05 |
โ Implementation&Simulation Intermediate I - 20 Solvedโ (0) | 2022.11.28 |
โ BF Intermediate I - 14 Solvedโ (0) | 2022.11.21 |
โ Sorting Intermediate I - 18 Solvedโ (0) | 2022.11.20 |
๋๊ธ