結果
問題 |
No.3001 ヘビ文字列
|
ユーザー |
👑 |
提出日時 | 2024-12-29 14:27:36 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 870 bytes |
コンパイル時間 | 960 ms |
コンパイル使用メモリ | 82,084 KB |
実行使用メモリ | 238,400 KB |
最終ジャッジ日時 | 2025-01-01 07:44:46 |
合計ジャッジ時間 | 117,845 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 43 TLE * 40 |
ソースコード
R=range S=input() N=len(S) L=1415 P=[] C=[0]*L for i in R(2,L): if C[i]<1: P+=[i];j=i*i while j<L:C[j],j=1,j+i D=[1];E=[];e=n=N for p in P: c=0 while n%p<1:n//=p;c+=1 r=len(D) for i in R(c):D+=[d*p for d in D[-r:]] if c:E+=[[p,c]];e=e//p*(p-1) r=len(D) if n>1:D+=[d*n for d in D[-r:]];r*=2;E+=[[n,1]];e=e//n*(n-1) D.pop() d_best = -1 opt = N + 1 for d in D: Nd = N // d opt_temp = 0 for i in R(d): h = [0]*26 temp = 0 for j in R(Nd): c = ord(S[i+j*d]) - ord('A') h[c] += 1 temp = max( temp , h[c] ) opt_temp += Nd - temp if opt > opt_temp: opt = opt_temp d_best = d Nd = N // d_best T=['A']*N for i in R(d_best): h = [0]*26 for j in R(Nd):h[ord(S[i+j*d_best]) - ord('A')] += 1 c_opt = -1 temp = 0 for c in R(26): if temp < h[c]: temp = h[c] c_opt = c for j in R(Nd):T[i+j*d_best] = chr(c_opt + ord('A')) print("".join(T))