結果
問題 | No.1580 I like Logarithm! |
ユーザー |
|
提出日時 | 2021-07-02 21:42:30 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 137 ms / 2,000 ms |
コード長 | 3,270 bytes |
コンパイル時間 | 155 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 77,952 KB |
最終ジャッジ日時 | 2024-06-29 11:13:23 |
合計ジャッジ時間 | 5,540 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 39 |
ソースコード
import sysfrom sys import exit, stdinfrom collections import deque, defaultdict, Counterfrom copy import deepcopyfrom bisect import bisect_left, bisect_right, insort_left, insort_rightfrom heapq import heapify, heappop, heappushfrom itertools import product, permutations, combinations, combinations_with_replacementfrom functools import reducefrom math import gcd, sin, cos, tan, asin, acos, atan, atan2, degrees, radians, ceil, floorfrom math import pi as PIfrom random import randint# from decimal import Decimalsys.setrecursionlimit(500000)INF = (1<<61)-1EPS = 1e-10MOD = 10**9+7# MOD = 998244353def input():return stdin.readline()[:-1]def intput():return int(stdin.readline())def minput():return stdin.readline()[:-1].split()def linput():return stdin.readline()[:-1].split()def mint():return map(int,stdin.readline().split())def lint():return list(map(int,stdin.readline().split()))def ilint():return int(stdin.readline()), list(map(int,stdin.readline().split()))def lcm(x,y):return x*y//gcd(x,y)def lgcd(l):return reduce(gcd,l)def llcm(l):return reduce(lcm,l)def powmod(n,i,mod=MOD):return pow(n,mod-1+i,mod) if i<0 else pow(n,i,mod)def div2(x):return x.bit_length()def div10(x):return len(str(x))-(x==0)def popcount(x):return bin(x).count('1')def digit(x,i,max_len=None):s = str(x)if max_len:i -= max_len-len(s)return int(s[i-1]) if i>0 else 0def digitsum(x):ans = 0for i in range(div10(x)):ans += digit(x,i+1)return ansdef pf(x,mode='counter'):C = Counter()p = 2while x>1:k = 0while x%p==0:x //= pk += 1if k>0:C[p] += kp = p+2-(p==2) if p*p<x else xif mode=='counter':return CS = set([1])for k in C:T = deepcopy(S)for x in T:for i in range(1,C[k]+1):S.add(x*(k**i))if mode=='set':return Sif mode=='list':return sorted(S)def isprime(x):if x<2:return Falsereturn len(pf(x,'set'))==2def matmul(A, B):# import numpyA1, A2 = A >> 15, A & (1 << 15) - 1B1, B2 = B >> 15, B & (1 << 15) - 1X = np.dot(A1, B1) % MODY = np.dot(A2, B2)Z = np.dot(A1 + A2, B1 + B2) - X - Yreturn ((X << 30) + (Z << 15) + Y) % MODdef matpow(A, N):P = np.eye(A.shape[0], dtype=np.int64)while N:if N & 1:P = matmul(P, A)A = matmul(A, A)N >>= 1return Pdef zash(S):lis = sorted(S)dic = {}for i,x in enumerate(lis):dic[x] = ireturn lis, dicdef pr(*x):print(*x, sep='', end='') if len(x) else print()def lprint(l):for x in l: print(x)def ston(c, c0='a'):return ord(c)-ord(c0)def ntos(x, c0='a'):return chr(x+ord(c0))def judge(x, l=['Yes', 'No']):print(l[0] if x else l[1])def debug(*x, flag=1):if flag: print(*x)######################################################a=intput()b=input()N=len(b)ans=0for i in range(N-1):ans+=i*(powmod(a,i+1,MOD)-powmod(a,i,MOD))B=0for s in b:B*=aB+=int(s)B%=MODans+=(N-1)*(B-powmod(a,N-1,MOD)+1)ans%=MODprint(ans)