結果
| 問題 |
No.3310 mod998
|
| コンテスト | |
| ユーザー |
sasa8uyauya
|
| 提出日時 | 2025-10-24 23:11:35 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,190 bytes |
| コンパイル時間 | 495 ms |
| コンパイル使用メモリ | 82,576 KB |
| 実行使用メモリ | 234,872 KB |
| 最終ジャッジ日時 | 2025-10-24 23:12:01 |
| 合計ジャッジ時間 | 22,839 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 4 WA * 29 |
ソースコード
def TASIZAN(a,b):
n=len(a)
b=[0]*(n-len(str(b)))+list(map(int,str(b)))
c=[0]*(n+1)
for i in reversed(range(n)):
c[i+1]+=a[i]+b[i]
c[i]+=c[i+1]//10
c[i+1]%=10
return c
def HIKIZAN(a,b):
n=len(a)
b=[0]*(n-len(str(b)))+list(map(int,str(b)))
c=[0]*n
for i in reversed(range(n)):
if a[i]<b[i]:
a[i]+=1
a[i-1]-=1
c[i]=a[i]-b[i]
return c
def WARIZAN(a,b):
p1=[]
p2=0
for d in a:
p2=p2*10+int(d)
p1+=[p2//b]
p2=p2%b
return p1,p2
T=int(input())
M=998
for _ in range(T):
n,m=map(int,input().split())
p=[1]
d={1:0}
while 1:
np=p[-1]*n%M
if np in d:
l=d[np]
break
d[np]=len(p)
p+=[np]
pa=p[:l]
pb=p[l:]
for i in range(1,len(pa)):
pa[i]+=pa[i-1]
pa[i]%=M
for i in range(1,len(pb)):
pb[i]+=pb[i-1]
pb[i]%=M
for i in range(m):
k=TASIZAN(list(map(int,input())),1)
if len(k)<=4 and int("".join(map(str,k)))<=len(pa):
k=int("".join(map(str,k)))
print(pa[k-1]%M)
continue
a=pa[-1] if len(pa)>0 else 0
k=HIKIZAN(k,len(pa))
p1,p2=WARIZAN(k,len(pb))
p3,p4=WARIZAN(p1,M)
a+=pb[-1]*p4
if p2!=0:
a+=pb[p2-1]
print(a%M)
sasa8uyauya