SICAU-OJ: A|B
阿新 • • 發佈:2018-12-10
A|B
題意:
給出一個整數n(1<=n<=10100),求Σd(d滿足d可以整除n),同時保證不存在x^2有x^2可以整除n。
另外,n的質因子滿足小於等於1000。
題解:
這題是我第一道用python做的題...畢竟大數C寫起來還是挺麻煩的。
根據唯一分解定理我們知道n=p1^a1*p2^a2*....*pn^an,再來看條件,我們知道這裡的p1...pn都是小於等於1000的。
另外,由不存在x^2可以整除n可知:a1=a2=...=an=1。
倘若at>1,那麼一定有一個x^2是n的因子。畢竟n是由這些數給乘起來的。
最後我們統計答案時,計算(p1+1)*(p2+1)*....*(pn+1)就行了,可以十分方便地計算出所有的情況。
程式碼如下:
prim=[] vis=[] for i in range(1000):vis.append(0) for i in range(2,1000): if(not vis[i]): prim.append(i) for j in range(i*i,1000,i): vis[j]=1; t=int(input()) while(t): t-=1 need=[] sum=1 n=int(input()) l = len(prim) fori in range(l): if(n%prim[i]==0): need.append(prim[i]) l=len(need) for i in range(l): sum*=(need[i]+1) print(sum)