結果
問題 | No.1809 Divide NCK |
ユーザー |
|
提出日時 | 2022-01-14 23:06:10 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 68 ms / 2,000 ms |
コード長 | 1,860 bytes |
コンパイル時間 | 228 ms |
コンパイル使用メモリ | 82,076 KB |
実行使用メモリ | 63,980 KB |
最終ジャッジ日時 | 2024-11-20 13:51:24 |
合計ジャッジ時間 | 3,850 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 39 |
ソースコード
# import sys# input = sys.stdin.readlinedef mp():return map(int,input().split())def lmp():return list(map(int,input().split()))def mps(A):return [tuple(map(int, input().split())) for _ in range(A)]def stoi(LIST):return list(map(int,LIST))def itos(LIST):return list(map(str,LIST))def bitA(X,A):return X & 1<<A == 1<<Aimport mathimport bisectimport heapqimport timefrom copy import copy as ccfrom copy import deepcopy as dcfrom itertools import accumulatefrom collections import Counter, defaultdict, dequedef ceil(U,V):return (U+V-1)//Vdef modf1(N,MOD):return (N-1)%MOD+1inf = int(1e18+20)mod = int(1e9+7)def seg_insu(x,M):return insu(x,M)-insu(x-k,M)def insu(x,M):ans = 0now = Mwhile now <= x:ans += x//nownow *= Mreturn ansdef factorization(n):arr = []temp = nfor i in range(2, int(-(-n**0.5//1))+1):if temp%i==0:cnt=0while temp%i==0:cnt+=1temp //= iarr.append([i, cnt])if temp!=1:arr.append([temp, 1])if arr==[]:arr.append([n, 1])return arrn,k,m = mp()mfact = factorization(m)#print(mfact)ans = 0bl = len(mfact)u = []for i,j in mfact:u.append((seg_insu(n,i)-seg_insu(k,i))//j)print(min(u))# for i in range(1,1<<bl):# tar = []# cnt = 1# for j in range(bl):# if bitA(i,j):# cnt += mfact[j][0]**mfact[j][1]# tar.append(mfact[j])# bunsi = []# bunbo = []# y = []# y.append(cnt)# u = inf# v = inf# for num,f in tar:# u = min(u,seg_insu())# now = inf# for num, f in tar:# now = min(now, (seg_insu(n,num)-seg_insu(k,num))//f)# if len(tar) % 2 == 1:# ans += now# else:# ans -= now# print(ans,tar)#print(ans)