NOIP2009普及组细胞分裂(数论)——yhx
Hanks 博士是 BT (Bio-Tech,生物技術) 領域的知名專家。現(xiàn)在,他正在為一個細胞實
驗做準備工作:培養(yǎng)細胞樣本。
Hanks 博士手里現(xiàn)在有 N 種細胞,編號從 1~N,一個第 i 種細胞經(jīng)過 1 秒鐘可以分裂為
Si個同種細胞(Si為正整數(shù))。現(xiàn)在他需要選取某種細胞的一個放進培養(yǎng)皿,讓其自由分裂,
進行培養(yǎng)。一段時間以后,再把培養(yǎng)皿中的所有細胞平均分入 M 個試管,形成 M 份樣本,
用于實驗。Hanks 博士的試管數(shù) M 很大,普通的計算機的基本數(shù)據(jù)類型無法存儲這樣大的
M 值,但萬幸的是,M 總可以表示為 m1的 m2次方,即
M = m1^m2
,其中 m1,m2均為基本
數(shù)據(jù)類型可以存儲的正整數(shù)。
注意,整個實驗過程中不允許分割單個細胞,比如某個時刻若培養(yǎng)皿中有 4 個細胞,
Hanks 博士可以把它們分入 2 個試管,每試管內 2 個,然后開始實驗。但如果培養(yǎng)皿中有 5
個細胞,博士就無法將它們均分入 2 個試管。此時,博士就只能等待一段時間,讓細胞們繼
續(xù)分裂,使得其個數(shù)可以均分,或是干脆改換另一種細胞培養(yǎng)。
為了能讓實驗盡早開始,Hanks 博士在選定一種細胞開始培養(yǎng)后,總是在得到的細胞“剛
好可以平均分入 M 個試管”時停止細胞培養(yǎng)并開始實驗。現(xiàn)在博士希望知道,選擇哪種細
胞培養(yǎng),可以使得實驗的開始時間最早。
輸入輸出格式
輸入格式:
第一行有一個正整數(shù) N,代表細胞種數(shù)。
第二行有兩個正整數(shù) m1,m2,以一個空格隔開,
即表示試管的總數(shù) M = m1^m2。
第三行有 N 個正整數(shù),第 i 個數(shù) Si表示第 i 種細胞經(jīng)過 1 秒鐘可以分裂成同種細胞的個
數(shù)。
輸出格式:
輸出文件 cell.out 共一行,為一個整數(shù),表示從開始培養(yǎng)細胞到實驗能夠開始所經(jīng)過的
最少時間(單位為秒)。
如果無論 Hanks 博士選擇哪種細胞都不能滿足要求,則輸出整數(shù)-1。
1 #include<cstdio> 2 #include<cmath> 3 struct prm 4 { 5 int x,t; 6 }m[10010]; 7 int a[10010]; 8 int main() 9 { 10 int i,j,k,n,p,q,m1,m2,x,y,z,cntm,ans,t; 11 bool ok; 12 scanf("%d",&n); 13 scanf("%d%d",&m1,&m2); 14 cntm=0; 15 for (i=2;m1!=1;i++) 16 if (m1%i==0) 17 { 18 cntm++; 19 m[cntm].x=i; 20 while (m1%i==0) 21 { 22 m[cntm].t++; 23 m1/=i; 24 } 25 m[cntm].t*=m2; 26 } 27 ans=-1; 28 for (i=1;i<=n;i++) 29 scanf("%d",&a[i]); 30 for (i=1;i<=n;i++) 31 { 32 p=0; 33 ok=1; 34 for (j=1;j<=cntm;j++) 35 if (a[i]%m[j].x==0) 36 { 37 t=0; 38 while (a[i]%m[j].x==0) 39 { 40 a[i]/=m[j].x; 41 t++; 42 } 43 if (m[j].t%t==0) t=m[j].t/t; 44 else t=m[j].t/t+1; 45 if (t>p) p=t; 46 } 47 else 48 { 49 ok=0; 50 break; 51 } 52 if (ok&&(ans==-1||p<ans)) ans=p; 53 } 54 printf("%d\n",ans); 55 }題目可以轉化成求方程ax=km1m2(k為整數(shù))的最小整數(shù)解。【我也來試一試打公式】
先把m1質因數(shù)分解,再把每個次數(shù)都乘上m2就是題中的M質因數(shù)分解的結果。
方程如果有解,那么必須m1的每個因數(shù)都是a的因數(shù),這樣a經(jīng)過冪之后才可能成為m1的倍數(shù)。在此基礎上,取各個因數(shù)中次數(shù)相差最多(指的是倍數(shù))的一個的倍數(shù),就是x的最小值。
轉載于:https://www.cnblogs.com/SBSOI/p/5574996.html
總結
以上是生活随笔為你收集整理的NOIP2009普及组细胞分裂(数论)——yhx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RHEL7.0 配置网络IP的三种方法
- 下一篇: Builder Pattern 在 Ob