日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NOIP2009普及组细胞分裂(数论)——yhx

發布時間:2024/1/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NOIP2009普及组细胞分裂(数论)——yhx 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述

Hanks 博士是 BT (Bio-Tech,生物技術) 領域的知名專家。現在,他正在為一個細胞實

驗做準備工作:培養細胞樣本。

Hanks 博士手里現在有 N 種細胞,編號從 1~N,一個第 i 種細胞經過 1 秒鐘可以分裂為

Si個同種細胞(Si為正整數)。現在他需要選取某種細胞的一個放進培養皿,讓其自由分裂,

進行培養。一段時間以后,再把培養皿中的所有細胞平均分入 M 個試管,形成 M 份樣本,

用于實驗。Hanks 博士的試管數 M 很大,普通的計算機的基本數據類型無法存儲這樣大的

M 值,但萬幸的是,M 總可以表示為 m1的 m2次方,即

M = m1^m2

,其中 m1,m2均為基本

數據類型可以存儲的正整數。

注意,整個實驗過程中不允許分割單個細胞,比如某個時刻若培養皿中有 4 個細胞,

Hanks 博士可以把它們分入 2 個試管,每試管內 2 個,然后開始實驗。但如果培養皿中有 5

個細胞,博士就無法將它們均分入 2 個試管。此時,博士就只能等待一段時間,讓細胞們繼

續分裂,使得其個數可以均分,或是干脆改換另一種細胞培養。

為了能讓實驗盡早開始,Hanks 博士在選定一種細胞開始培養后,總是在得到的細胞“剛

好可以平均分入 M 個試管”時停止細胞培養并開始實驗。現在博士希望知道,選擇哪種細

胞培養,可以使得實驗的開始時間最早。

輸入輸出格式

輸入格式:

第一行有一個正整數 N,代表細胞種數。

第二行有兩個正整數 m1,m2,以一個空格隔開,

即表示試管的總數 M = m1^m2。

第三行有 N 個正整數,第 i 個數 Si表示第 i 種細胞經過 1 秒鐘可以分裂成同種細胞的個

數。

輸出格式:

輸出文件 cell.out 共一行,為一個整數,表示從開始培養細胞到實驗能夠開始所經過的

最少時間(單位為秒)。

如果無論 Hanks 博士選擇哪種細胞都不能滿足要求,則輸出整數-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為整數)的最小整數解。【我也來試一試打公式】

先把m1質因數分解,再把每個次數都乘上m2就是題中的M質因數分解的結果。

方程如果有解,那么必須m1的每個因數都是a的因數,這樣a經過冪之后才可能成為m1的倍數。在此基礎上,取各個因數中次數相差最多(指的是倍數)的一個的倍數,就是x的最小值。

轉載于:https://www.cnblogs.com/SBSOI/p/5574996.html

總結

以上是生活随笔為你收集整理的NOIP2009普及组细胞分裂(数论)——yhx的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。