結果

問題 No.1407 Kindness
ユーザー titiatitia
提出日時 2021-02-26 22:36:01
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
RE  
(最新)
AC  
(最初)
実行時間 -
コード長 803 bytes
コンパイル時間 207 ms
コンパイル使用メモリ 12,800 KB
実行使用メモリ 26,496 KB
最終ジャッジ日時 2024-10-02 15:18:39
合計ジャッジ時間 9,445 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 12 RE * 24
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
input = sys.stdin.readline

N=input().strip()
mod=10**9+7


if int(N)<=2000:
    
    ANS=0
    for i in range(int(N)+1):
        x=str(i)
        SX=1
        for y in x:
            SX=SX*int(y)
        ANS+=SX
    print(ANS%mod)
    exit()

S=[1,45]
for i in range(2*10**5):
    S.append(S[-1]*45%mod)

S1=[0,45]
for i in range(2*10**5):
    S1.append((S1[-1]+pow(45,i+2,mod))%mod)


H=[0,1,3,6,10,15,21,28,36,45,0]
H1=[1,2,4,7,11,16,22,29,37,46]

ANS=0
kakeru=1
LEN=len(N)

for i in range(LEN):
    if i==0:
        ANS=ANS+(H[int(N[i])-1])*pow(45,LEN-i-1,mod)+S1[LEN-i-1]
    elif i==LEN-1:
        ANS=ANS+kakeru*H[int(N[i])]*S[LEN-i-1]      
    else:
        ANS=ANS+kakeru*H[int(N[i])-1]*S[LEN-i-1]
        
    ANS%=mod

    kakeru=kakeru*int(N[i])%mod

    #print(ANS)

print(ANS)
0