結果
| 問題 |
No.1918 Simple Math ?
|
| コンテスト | |
| ユーザー |
kozy
|
| 提出日時 | 2022-04-30 01:09:31 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 812 ms / 2,000 ms |
| コード長 | 861 bytes |
| コンパイル時間 | 166 ms |
| コンパイル使用メモリ | 81,792 KB |
| 実行使用メモリ | 150,656 KB |
| 最終ジャッジ日時 | 2024-06-29 07:09:42 |
| 合計ジャッジ時間 | 11,253 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 33 |
ソースコード
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+=int((a*i)**0.5)
ans%=mod
if a-1>=N:
print(ans)
continue
K=[0]*a
s1=0
for i in range(a,2*a):
#i**2以上(i+1)**2未満のaの倍数の個数
K[i-a]=(((i+1)**2-1)//a)-((i**2-1)//a)
s1+=K[i-a]*i
s1%=mod
x=int((N//a)**0.5)
#x>=1
s1%=mod
s2=((3*a-1)*a//2)%mod
s3=3*a
kosu=a
if x>=2:
ans+=s1*(x-1)%mod
ans+=(a*kosu%mod*((x-2)*(x-1)*(2*x-3))//3)%mod
ans+=(((x-2)*(x-1))//2)*a%mod*s3%mod
ans+=(x-2)*(x-1)*s2%mod
ans%=mod
#(x**2)*a~N
kk=N-((x**2)*a)+1
t=a*x
for i in range(a):
if kk-(K[i]+2*(x-1))<=0:
ans+=kk*(i+t)
ans%=mod
break
else:
kk-=(K[i]+2*(x-1))
ans+=(i+t)*(K[i]+2*(x-1))%mod
ans%=mod
print(ans)
kozy