DOJ logoDOJ
Problems
Recently added problemsSaved problems
CategoriesDLCContestsGroupsTeamsBoard
Ranking
Solved Problem RankingStreak rankingDOJ Power ranking
Status
Call for TasksLoginRegister
DOJ logoDOJ

Community online judge with OI-style subtask scoring, Elo ratings, and Discord-backed certification.

Problems
ProblemsCategories
Community
ContestsRankingBoardNoticesHost an external contestGuide
Account
LoginRegisterJudge Status
Policy
Terms of ServiceDLC RulesPrivacyAPI documentationLanguage runtimesContest rank rewardsRating and performance
© 2026 DOJ
All rights reserved
Editorial

Concatenate and Divide

Back to problem

Editorial

d(A)d(A)d(A)를 양의 정수 AAA의 십진수 자릿수라고 하자. 그러면

A@B=A⋅10d(B)+BA@B=A\cdot 10^{d(B)}+BA@B=A⋅10d(B)+B

이므로, A@BA@BA@B가 BBB로 나누어떨어질 조건은

B∣A⋅10d(B)B \mid A\cdot 10^{d(B)}B∣A⋅10d(B)

와 같다.

g=gcd⁡(X,Y)g=\gcd(X,Y)g=gcd(X,Y)라 하고 X=gaX=gaX=ga, Y=gbY=gbY=gb라고 쓰자. 그러면 이고 이므로 이다. 두 조건은 각각

gb∣ga⋅10d(Y),ga∣gb⋅10d(X)gb \mid ga\cdot 10^{d(Y)},\qquad ga \mid gb\cdot 10^{d(X)}gb∣ga⋅10d(Y),ga∣g

이고, ggg를 약분하면

b∣a⋅10d(Y),a∣b⋅10d(X)b \mid a\cdot 10^{d(Y)},\qquad a \mid b\cdot 10^{d(X)}b∣a⋅10d(Y),a∣b⋅10

이다. gcd⁡(a,b)=1\gcd(a,b)=1gcd(a,b)=1이므로 이는

b∣10d(Y),a∣10d(X)b \mid 10^{d(Y)},\qquad a \mid 10^{d(X)}b∣10d(Y),a∣10d(X)

와 동치이다.

따라서 d(X),d(Y)d(X),d(Y)d(X),d(Y)를 고정하면, aaa는 10d(X)10^{d(X)}10d(X)의 약수, bb는 의 약수 중에서 고르면 된다. 또한 과 를 만족해야 한다.

이제 고정된 dX=d(X)d_X=d(X)dX​=d(X), dY=d(Y)d_Y=d(Y)dY​=, , 에 대해 가능한 의 범위를 세자. , 가 각각 자릿수 , 를 가져야 하므로

10dX−1≤ga≤min⁡(N,10dX−1),10^{d_X-1} \leq ga \leq \min(N,10^{d_X}-1),10dX​−1≤ga≤min(N, 10dY−1≤gb≤min⁡(N,10dY−1)10^{d_Y-1} \leq gb \leq \min(N,10^{d_Y}-1)10dY​−1≤gb≤min(N,1

이어야 한다. 따라서

L=max⁡(⌈10dX−1a⌉,⌈10dY−1b⌉),L=\max\left(\left\lceil\frac{10^{d_X-1}}{a}\right\rceil,\left\lceil\frac{10^{d_Y-1}}{b}\right\rceil\right),L=max(⌈a10 R=min⁡(⌊min⁡(N,10dX−1)a⌋,⌊min⁡(N,10dY−1)b⌋)R=\min\left(\left\lfloor\frac{\min(N,10^{d_X}-1)}{a}\right\rfloor,\left\lfloor\frac{\min(N,10^{d_Y}-1)}{b}\right\rfloor\right)R=min(⌊amin(N

이다. L≤g≤RL \leq g \leq RL≤g≤R인 정수 ggg의 개수는 max⁡(0,R−L+1)\max(0,R-L+1)max(0,R−L+이다.

N≤1018N \leq 10^{18}N≤1018이므로 가능한 자릿수는 최대 191919개이다. 각 ddd에 대해 10d10^d10의 약수는 꼴이며 이다. 따라서 모든 를 직접 순회해도 충분히 빠르다.

Solution written by GPT5.5

gcd⁡(a,b)=1\gcd(a,b)=1gcd(a,b)=1
X<YX<YX<Y
a<ba<ba<b
b
⋅
10d(X)
d(X)
b
10d(Y)10^{d(Y)}10d(Y)
gcd⁡(a,b)=1\gcd(a,b)=1gcd(a,b)=1
a<ba<ba<b
d
(
Y
)
aaa
bbb
ggg
X=gaX=gaX=ga
Y=gbY=gbY=gb
dXd_XdX​
dYd_YdY​
1
0dX​
−
1),
0dY​
−
1)
dX​
−
1
​
⌉
,
⌈b10dY​−1​⌉
)
,
,
1
0dX​
−
1
)
​
⌋
,
⌊bmin(N,10dY​−1)​⌋
)
1
)
d
2i5j2^i5^j2i5j
0≤i,j≤d0 \leq i,j \leq d0≤i,j≤d
dX,dY,a,bd_X,d_Y,a,bdX​,dY​,a,b