結果
| 問題 |
No.1918 Simple Math ?
|
| コンテスト | |
| ユーザー |
kozy
|
| 提出日時 | 2022-04-29 23:16:11 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 978 bytes |
| コンパイル時間 | 212 ms |
| コンパイル使用メモリ | 81,836 KB |
| 実行使用メモリ | 270,260 KB |
| 最終ジャッジ日時 | 2024-06-29 04:58:59 |
| 合計ジャッジ時間 | 13,191 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 15 TLE * 1 -- * 17 |
ソースコード
def f(n):
a=int(n**0.5)
for i in range(-3,3):
if (a+i)**2<=n<(a+i+1)**2:
return a+i
T=int(input())
mod=10**9+7
for _ in range(T):
a,N=map(int,input().split())
ans=0
for i in range(1,a):
if i>N:
break
ans+=f(a*i)
ans%=mod
if a-1>=N:
print(ans)
continue
d=dict()
for i in range(a,4*a):
if f(i*a) not in d:
d[f(i*a)]=0
d[f(i*a)]+=1
x=f(N//a)
#x>=1
s1=0
s2=0
s3=0
kosu=0
for i in d:
s1+=i*d[i]%mod
s2+=i
s3+=d[i]
kosu+=1
s1%=mod
s2%=mod
s3%=mod
if x>=2:
ans+=s1*(x-1)%mod
ans+=(2*a*kosu%mod*((x-2)*(x-1)*(2*x-3))//6)%mod
ans+=(((x-2)*(x-1))//2)*a%mod*s3%mod
ans+=(((x-2)*(x-1))//2)*2*s2%mod
ans%=mod
#(x**2)*a~N
kk=N-((x**2)*a)+1
for i in d:
if kk-(d[i]+2*(x-1))<=0:
ans+=kk*(i+a*(x-1))%mod
ans%=mod
break
else:
kk-=(d[i]+2*(x-1))
kk%=mod
ans+=(i+a*(x-1))*(d[i]+2*(x-1))%mod
ans%=mod
print(ans)
kozy