結果
| 問題 |
No.1953 8
|
| コンテスト | |
| ユーザー |
とりゐ
|
| 提出日時 | 2022-05-20 23:32:07 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 54 ms / 2,000 ms |
| コード長 | 588 bytes |
| コンパイル時間 | 179 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 61,568 KB |
| 最終ジャッジ日時 | 2024-09-20 09:59:13 |
| 合計ジャッジ時間 | 5,429 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 |
ソースコード
c=[1,0,0,0,1,0,1,0,2,1]
d=[1,1,1,1,2,2,3,3,5,6]
def calc(n):
s=str(n)
m=len(s)
ans=0
for i in range(m):
si=int(s[i])
if si!=0:
ans+=(d[si-1])*pow(10,m-i-1)
if i!=m-1:
ans+=d[9]*pow(10,m-i-2)*int(s[i])*(m-i-1)
if i!=m-1:
ans+=c[si]*(int(s[i+1:])+1)
else:
ans+=c[int(s[-1])]
for i in range(1,m+1):
k=min(n,pow(10,i))-pow(10,i-1)
ans-=max(k,0)*(m-i)
return ans-m
k=int(input())
ng,ok=10**18,0
while abs(ok-ng)>1:
mid=(ok+ng)//2
if calc(mid)<=k:
ok=mid
else:
ng=mid
if calc(ok)==k:
print(ok)
else:
print(-1)
とりゐ