結果
問題 | No.2480 Sequence Sum |
ユーザー |
|
提出日時 | 2023-09-22 22:01:23 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 147 ms / 500 ms |
コード長 | 8,600 bytes |
コンパイル時間 | 367 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 92,288 KB |
最終ジャッジ日時 | 2024-07-26 14:37:47 |
合計ジャッジ時間 | 3,163 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 13 |
ソースコード
import sysread=sys.stdin.buffer.read;readline=sys.stdin.buffer.readline;input=lambda:sys.stdin.readline().rstrip()import bisect,string,math,time,functools,random,fractionsfrom bisect import*from heapq import heappush,heappop,heapifyfrom collections import deque,defaultdict,Counterfrom itertools import permutations,combinations,groupbyimport itertoolsrep=range;R=rangedef I():return int(input())def LI():return [int(i) for i in input().split()]def SLI():return sorted([int(i) for i in input().split()])def LI_():return [int(i)-1 for i in input().split()]def S_():return input()def IS():return input().split()def LS():return [i for i in input().split()]def NI(n):return [int(input()) for i in range(n)]def NI_(n):return [int(input())-1 for i in range(n)]def NLI(n):return [[int(i) for i in input().split()] for i in range(n)]def NLI_(n):return [[int(i)-1 for i in input().split()] for i in range(n)]def StoLI():return [ord(i)-97 for i in input()]def ItoS(n):return chr(n+97)def LtoS(ls):return ''.join([chr(i+97) for i in ls])def RLI(n=8,a=1,b=10):return [random.randint(a,b)for i in range(n)]def RI(a=1,b=10):return random.randint(a,b)def GI(V,E,ls=None,Directed=False,index=1):org_inp=[];g=[[] for i in range(V)]FromStdin=True if ls==None else Falsefor i in range(E):if FromStdin:inp=LI()org_inp.append(inp)else:inp=ls[i]if len(inp)==2:a,b=inp;c=1else:a,b,c=inpif index==1:a-=1;b-=1aa=a,c,;bb=b,c,;g[a].append(bb)if not Directed:g[b].append(aa)return g,org_inpdef RE(E):rt=[[]for i in range(len(E))]for i in range(len(E)):for nb,d in E[i]:rt[nb]+=(i,d),return rtdef RLE(it):rt=[]for i in it:if rt and rt[-1][0]==i:rt[-1][1]+=1else:rt+=[i,1],return rtdef GGI(h,w,search=None,replacement_of_found='.',mp_def={'#':1,'.':0},boundary=1):#h,w,g,sg=GGI(h,w,search=['S','G'],replacement_of_found='.',mp_def={'#':1,'.':0},boundary=1) # sample usagemp=[boundary]*(w+2);found={}for i in R(h):s=input()for char in search:if char in s:found[char]=((i+1)*(w+2)+s.index(char)+1)mp_def[char]=mp_def[replacement_of_found]mp+=[boundary]+[mp_def[j] for j in s]+[boundary]mp+=[boundary]*(w+2)return h+2,w+2,mp,founddef TI(n):return GI(n,n-1)def accum(ls):rt=[0]for i in ls:rt+=[rt[-1]+i]return rtdef bit_combination(n,base=2):rt=[]for tb in R(base**n):s=[tb//(base**bt)%base for bt in R(n)];rt+=[s]return rtdef gcd(x,y):if y==0:return xif x%y==0:return ywhile x%y!=0:x,y=y,x%yreturn ydef YN(x):print(['NO','YES'][x])def Yn(x):print(['No','Yes'][x])def show(*inp,end='\n'):if show_flg:print(*inp,end=end)inf=float('inf')FourNb=[(-1,0),(1,0),(0,1),(0,-1)];EightNb=[(-1,0),(1,0),(0,1),(0,-1),(1,1),(-1,-1),(1,-1),(-1,1)];compas=dict(zip('WENS',FourNb));cursol=dict(zip('UDRL',FourNb));HexNb=[(-1,0),(-1,-1),(0,1),(0,-1),(1,1),(1,0)]alp=[chr(ord('a')+i)for i in range(26)]#sys.setrecursionlimit(10**7)def gcj(t,*a):print('Case #{}:'.format(t+1),*a)def INP():N=80n=random.randint(1,N)x=random.randint(1,N)n,d=RLI(2,1,10)k=RI(1,n)return n,d,kdef Rtest(T):case,err=0,0for i in range(T):inp=INP()#show(inp)a1=naive(*inp)a2=solve(*inp)if a1!=a2:print(inp)n,d,k=inp#a,b=bin(n)[2:],bin(x)[2:]show(n,d,k)print('naive',a1)print('solve',a2)err+=1case+=1print('Tested',case,'case with',err,'errors')def graph():g=[[]for i in range(n)]for i in range(m):u,v=LI()g[u]+=v,g[v]+=u,mo=998244353#mo=10**9+7show_flg=Falseshow_flg=True######################################################################################################################################################################### Verified by# https://yukicoder.me/problems/no/979# https://atcoder.jp/contests/abc152/tasks/abc152_e## return prime factors of N as dictionary {prime p:power of p}## within 2 sec for N = 2*10**20+7def isPrimeMR(n):d = n - 1d = d // (d & -d)L = [2, 7, 61] if n < 1<<32 else [2, 3, 5, 7, 11, 13, 17] if n < 1<<48 else [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]for a in L:t = dy = pow(a, t, n)if y == 1: continuewhile y != n - 1:y = y * y % nif y == 1 or t == n - 1: return 0t <<= 1return 1def findFactorRho(n):m = 1 << n.bit_length() // 8for c in range(1, 99):f = lambda x: (x * x + c) % ny, r, q, g = 2, 1, 1, 1while g == 1:x = yfor i in range(r):y = f(y)k = 0while k < r and g == 1:ys = yfor i in range(min(m, r - k)):y = f(y)q = q * abs(x - y) % ng = gcd(q, n)k += mr <<= 1if g == n:g = 1while g == 1:ys = f(ys)g = gcd(abs(x - ys), n)if g < n:if isPrimeMR(g): return gelif isPrimeMR(n // g): return n // greturn findFactorRho(g)def primeFactor(n):i = 2ret = {}rhoFlg = 0while i * i <= n:k = 0while n % i == 0:n //= ik += 1if k: ret[i] = ki += i % 2 + (3 if i % 3 == 1 else 1)if i == 101 and n >= 2 ** 20:while n > 1:if isPrimeMR(n):ret[n], n = 1, 1else:rhoFlg = 1j = findFactorRho(n)k = 0while n % j == 0:n //= jk += 1ret[j] = kif n > 1: ret[n] = 1if rhoFlg: ret = {x: ret[x] for x in sorted(ret)}return ret## return divisors of n as listdef divisors(N):pf = primeFactor(N)ret = [1]for p in pf:ret_prev = retret = []for i in range(pf[p]+1):for r in ret_prev:ret.append(r * (p ** i))return sorted(ret)## return the array s such that s[q] = the minimum prime factor of qdef sieve(x):s=[i for i in range(x+1)]p=2while p*p<=x:if s[p]==p:for q in range(2*p,x+1,p):if s[q]==q:s[q]=pp+=1return s## return the list of prime numbers in [2,N], using eratosthenes sieve## around 800 ms for N = 10**6 by PyPy3 (7.3.0) @ AtCoderdef PrimeNumSet(N):M=int(N**0.5)seachList=[i for i in range(2,N+1)]primes=[]while seachList:if seachList[0]>M:breakprimes.append(seachList[0])tmp=seachList[0]seachList=[i for i in seachList if i%tmp!=0]return primes+seachList## retrun LCM of numbers in list b## within 2sec for no of B = 10*5 and Bi < 10**6def LCM(b,mo=10**9+7):prs=PrimeNumSet(max(b))M=dict(zip(prs,[0]*len(prs)))for i in b:dc=primeFactor(i)for j,k in dc.items():M[j]=max(M[j],k)r=1for j,k in M.items():if k!=0:r*=pow(j,k,mo)r%=moreturn r## return (a,b,gcd(x,y)) s.t. a*x+b*y=gcd(x,y)def extgcd(x,y):if y==0:return 1,0r0,r1,s0,s1 = x,y,1,0while r1!= 0:r0,r1,s0,s1=r1,r0%r1,s1,s0-r0//r1*s1return s0,(r0-s0*x)//y,x*s0+y*(r0-s0*x)//y## return x,LCM(mods) s.t. x = rem_i (mod_i), x = -1 if such x doesn't exist## verified by ABC193E## https://atcoder.jp/contests/abc193/tasks/abc193_edef crt(rems,mods):n=len(rems)if n!=len(mods):return NotImplementedx,d=0,1for r,m in zip(rems,mods):a,b,g=extgcd(d,m)x,d=(m*b*x+d*a*r)//g,d*(m//g)x%=dfor r,m in zip(rems,mods):if r!=x%m:return -1,dreturn x,d## returns the maximum integer rt s.t. rt*rt<=x## verified by ABC191D## https://atcoder.jp/contests/abc191/tasks/abc191_ddef intsqrt(x):if x<0:return NotImplementedrt=int(x**0.5)-1while (rt+1)**2<=x:rt+=1return rtans=0n=I()d=divisors(n)ans=n-len(d)print(ans)