2019.6.18 校内测试 分析+题解
話說校內怎么又考試了QwQ,哎考就考吧(隨雞硬便啦)
考試的三個題分別都再洛谷上:
P1067 多項式輸出? 傳送門
P1068 分數線劃定? 傳送門
P1069 細胞分裂? ? ?傳送門
嗚嗚嗚~T1之前在洛谷上剛做了,當時就記得有好多坑來著,沒想到這次重蹈覆轍,哎,當時沒及時將這個題整理下來,導致了我的印象不深刻,然后這個題就白丟了40分。
這就告訴我們要及時整理好博客啦,OK,考后我們都要整理博客的,走起:
T1 多項式輸出
這個題真的是挺簡單的,難度是普及-,只是有好多坑的地方,我對此做出了以下需要注意的地方(其實很多就是題目中強調的):
1.注意系數1和-1,我們不用輸出那個數字,輸出符合就好啦;
2.當x是1次方時,不需要輸出"x^1";
3.最后的常數項若為0,不能輸出是+0或-0,所以需要單獨拿出來判斷;
應該就上面這三個比較坑的地方了吧QwQ,尤其是第一條,我的第一項沒有判斷1和-1的情況,直接WA了4個點;
題外話說完了,下面上代碼嘍:
#include<iostream> #include<cstdio> using namespace std; int read() //讀入優化 {char ch=getchar();int a=0,x=1;while(ch<'0'||ch>'9'){if(ch=='-') x=-x;ch=getchar();}while(ch>='0'&&ch<='9'){a=(a<<3)+(a<<1)+(ch-'0');ch=getchar();}return a*x; } int n,a[120]; //存每一項的系數 int main() {//freopen("poly.in","r",stdin);//freopen("poly.out","w",stdout);n=read();for(int i=n;i>=0;i--) a[i]=read(); //每一項的系數,倒著存更方便哦 if(a[n]==1) cout<<"x^"<<n; //這里單獨拿出來第一項的原因是解決符合的問題 else if(a[n]==-1) cout<<"-x^"<<n; //注意1和-1這兩個特殊的系數 else cout<<a[n]<<"x^"<<n; */ //不是1或-1那么就正常輸出 for(int i=n-1;i>=2;i--) {if(a[i]<0) {if(a[i]!=-1) cout<<a[i]<<"x^"<<i;//還是要注意-1的情況 else cout<<"-x^"<<i;}if(a[i]>0){if(a[i]!=1) cout<<"+"<<a[i]<<"x^"<<i;//注意1的情況 else cout<<"+x^"<<i;}} if(a[1]>0) //單獨處理倒數第二項 {if(a[1]==1) cout<<"+x"; //一再注意1 else cout<<"+"<<a[1]<<"x"; }if(a[1]<0) {if(a[1]==-1) cout<<"-x"; //二再注意-1 cout<<a[1]<<"x"; }if(a[0]>0) cout<<"+"<<a[0]; //單獨處理最后一項 if(a[0]<0) cout<<a[0];return 0; }?
上面的T1毫無難度對不對,接下來看更簡單的QwQ:
T2? 分數線劃定
這個題也沒什么好講的,j竟然讓我上去講這個題,多么amazing的事,我就想問再看我博客的大佬們誰沒有AC這道題?
咳咳,簡單的說下思路吧:
1.輸入n,m,然后我們就順便把理想錄取人數求出來,就設enter=(int)m*1.5,這里轉個int就相當于向下取整了;其實我是不會告訴你我忘了是ceil還是floor了
2.按照分數排序,分數相同的編號小的靠前,這個寫個自定義排序即可;
3.排完序后,我們直接找到第enter個人的分數,然后一直往后找,直到找到一個分數不同的,那么實際錄取人數就是最后一個分數相同的人的下標;
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; int read() //讀入優化 {char ch=getchar();int a=0,x=1;while(ch<'0'||ch>'9'){if(ch=='-') x=-x;ch=getchar();}while(ch>='0'&&ch<='9'){a=(a<<3)+(a<<1)+(ch-'0');ch=getchar();}return a*x; } int n,m,enter; struct people {int id,point; }a[5001]; int cmp(people x,people y) //按照分數大小排序 {if(x.point!=y.point) return x.point>y.point; else return x.id<y.id; //分數相同那么編號小的優先 } int main() {//freopen("score.in","r",stdin);//freopen("score.out","w",stdout);n=read();m=read();enter=(int)(m*1.5); //理想進入面試的人數 for(int i=1;i<=n;i++){a[i].id=read(); //編號 a[i].point=read(); //分數 }sort(a+1,a+1+n,cmp); //按照分數從大到小排序 int q=enter+1; //q為實際進入面試的人數 while(a[q].point==a[enter].point) q++; //一直找分數相同的 q--; //這里不要忘了減一,不懂得同學模擬一遍就好啦 cout<<a[q].point<<" "<<q<<endl;for(int i=1;i<=q;i++) printf("%d %d\n",a[i].id,a[i].point); //輸出,好簡單啊 return 0; }?
T3? 細胞分裂? ?-----小boss題
此題不會已放棄~~詳情請見ych or ybr or wz 這些rank1的神仙們的博客吧!
算了,現在還是強行口胡一下我的思路吧:
我們看這個數據:m1的范圍是30000以內,m2的范圍是10000以內,若我們直接求m1^m2……,暴的不堪設想;
那么我們就要換一種別的方法嘍,當然分解質因數可以,而且這個思路很好(詳情出門轉到ych的博客),但是我也說下我的思路啦:
首先我們將每種細胞單獨拿出來考慮,就設它是Si 吧,那么總有m1^m2 | Si^n ,這里這個n就是要求的最小時間;
然后我們可以考慮求出來m1與Si的最大公約數gcdd,因為想到這個gcdd在前面會被算個gcdd^m2,在后面又會被算個gcdd^n,覺得有點浪費(當時我真的這么想),就單獨將它摘出來吧;
有了最大公約數,我們就可以將m1^m2和Si^n轉化一下形式啦:
設m1=m*gcdd,Si=s*gcdd,那么(m*gcdd)^m2 | (s*gcdd)^n,也就是 (m^m2)*(gcdd^m2)| (s^n)*(gcdd^n);
兩邊同除以(gcdd^m2)后得到:? m^m2 | (s^n)*[ gcdd^(n-m2)];
我們繼續看左邊這個東東,它是不是很像原來我們一開始列出的式子:m1^m2 | Si^n? 與? m^m2 | (s^n)*[ gcdd^(n-m2) ];
雖然只是有一點點像啦,但是這右邊差的有點大啊qwq,能不能化簡一下啦?
當然能!我們看一個定理:
若有兩個互質的數p,q,則一定存在p^n mod q^m ≠ 0(其實是gcd(p^n,q^m)=1) ,其實就是無論多少次方都不能整除!
草草證明一下吧:
∵p,q互質,∴p和q無任何相同的因子
又∵p^n 和 q^m只是改變了因子的指數,而并沒有增加或減少因子本身的數值
∴ 仍沒有相同的因子,即仍互質?
有了這個定理,我們就可以化簡右邊的一大堆式子了:
因為m和s是分別由m1和Si 同除以它們的最大公約數gcdd得到,那么m和s一定是互質的!(所有相同的因子都被除了,只剩下不相同的了)
那么也就是說,右邊的s^n無論如何都不能使m^m2 | s^n,答案只可能從上面的gcdd^(n-m2)中產生!所以我們完全可以舍棄s^n來化簡式子,那么式子就化簡成:
m^m2 | gcdd^(n-m2)? ?我們可以將(n-m2)看成一個整體,這樣就真的和我們一開始列出的式子很像了QwQ
所以我們還可以繼續進行我們剛剛執行的操作:找最大公約數!
恩,繼續找最大公約數:我們設gcddd=gcd(m,gcdd),則m=gcddd*_m,gcdd=gcddd*_gcdd (有點混,但是真的找不出來好變量名了,gcddd是最大公約數,_m是m除以最大公約數后剩下的數,_gcdd是gcdd除以最大公約數后剩下的數);
還是剛剛那樣,用最大公約數將原先的m和gcdd表示出來:
m^m2 | gcdd^(n-m2)
=(gcddd*_m)^m2 | (gcddd*_gcdd)^(n-m2)
=gcddd^m2 *? _m^m2 | gcddd^(n-m2)*_gcdd^(n-m2)? ?然后我們還是把最大公約數那一項除到右邊來:
=_m^m2 | gcddd^(n-m2-m2)*_gcdd^(n-m2)
=_m^m2 | gcddd^(n-2 * m2)* _gcdd^(n-m2)
還是再套用上面的定理:? ∵_m與_gcdd互質,那么我們可以舍棄_gcdd^(n-m2)
那么式子又簡化為: _m^m2 | gcddd^(n-2 * m2)
然后我們還可以找最大公約數…………,有沒有發現其實這就是一個遞歸操作,那有沒有界限呢?
當然有!我們上述的操作其實就是一直將m1除以某個數,那么最后它一定會被除到1的!這樣一來,式子就成了:
1^m2 | …………,對沒錯,1^m2還是1,那么這個問題就被我們巧妙的轉化成了:
求最小的n,使得右邊那一堆式子是整數!(是不是很神奇啊!)
我們來一組詳細的數字來認真得體會上面的過程:
m1=96,m2=5
S1=36
那么我們先列出一個粗略的式子:
m1^m2 | S1^n(這個n和題目中的n不一樣,這個n就是我們要求的最短時間),代入數據就是:96^5 | 36 ^n
首先求出gcd(96,36)=12,然后將最大公約數代入原式:
(12*8)^5 | (12*3)^n = (12^5)*(8^5)| (12^n)*(3^n),然后我們將最大公約數12那一項除到右邊:
8^5 | 12^(n-5)*(3^n),運用定理可知3^n不可能產生答案,我們可以舍棄它:
8^5 | 12^(n-5),我們繼續找到gcd(8,12)=4,并代入原式:
(4*2)^5 | (4*3)^(n-5)=4^5 * (2^5)| 4^(n-5)*[ 3^(n-5)],將最大公約數4的那一項除到右邊:
2^5 | 4^(n-10)* [ 3^(n-5)],運用定理可知3^(n-5)不可能產生答案,我們可以舍棄它:
2^5 | 4^(n-10),我們繼續找到gcd(2,4)=2,并代入原式:
(1*2)^5 | (2*2)^(n-10)=1^5 *(2^5)| 2^(n-10)* [ 2^(n-10)],你是不是已經知道了?把最大公約數2那一項除過去:
1^5 | 2^(n-15)*2^[(n-10)]? = 1 | 2^(2n-25)
哇!我們將左邊的m1給搞成1了耶,接下來的任務不就是求最小的n使得2^(2n-25)是整數了嗎?
It is so easy! 列出不等式 2^(2n-25)>=2^0,則2n-25>=0,解得最小的整數n=13,(其實我們不用列不等式的,就是求出10和15的平均數再向上取整!)
so我們接下來總結一下我們每一步的操作,方便總結規律然后寫代碼:
1.求出m1和Si的最大公約數gcd;
2.若gcd=1,說明這兩個數互質,則不可能有解,直接跳出;
3.將m1和Si用這個最大公約數表示出來,然后將左側的最大公約數除到右側去;
4.可以舍棄與左側互質的部分,其實也就是Si / gcd 后的數;
5.從第一步開始繼續重復上述操作,直到gcd=1或m1=1;
你會發現我們上述操作始終和m2沒啥事,但是它不可能是來打醬油的吧QwQ~
其實它和最后的答案n有關,我們再來找一下m2的規律:
接下來這個例子我們不再將m2帶進去了,這樣能更好的找到規律哦:
m1=32, m2? ,S1=56?
列出式子? m1^m2 | S1^n:
將m1,S1代入得:??32^m2 | 56^n;
第一大步操作:
1.求出gcd(32,56)=8;
2.gcd不為1,說明目前階段有解;
3.原式=(8*4)^m2 | (8*7)^n? ? ?------用最大公約數表示
= 8^m2 *(4^m2)| 8^n*(7^n)? ? ------拆括號
=4^m2 | 8^(n-m2)*(7^n)? ? ? ? ?------將最大公約數那一項除到右側
4.舍棄與4^m2互質的那一項:7^n,原式成為:4^m2 | 8^(n-m2);
第二大步操作:
1.求出gcd(4,8)=4;
2.gcd不為1,說明目前階段有解;
3.原式=(4*1)^m2 | (4*2)^(n-m2)? ? ? ? ? ? ? ? ? ? ? ? ? ? ------用最大公約數表示
= 4^m2 *(1^m2)| 4^(n-m2)*[ 2^(n-m2)]? ? ? ? ? ? ? ? ?------拆括號
=1^m2 | 4^(n-m2-m2)*[2^(n-m2)]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------將最大公約數那一項除到右側
=1 | 4^(n-2 * m2)*[ 2^(n-m2)]
4.左側我們已經除到1了,那么我們就跳出,分析答案產生;
不知道各位在剛剛的例子中有沒有發現有關m2的規律,來和我發現的規律對比一下哪個更好:
1.我們在第3步操作結束以后(就是將最大公約數那一項除過去后),右側最大公約數的那一項的指數都會減去m2是吧,如果我們單獨拿出來每一個大步(每一個循環)的話,我們可以發現:右側最大公約數那一項的指數它減去的m2的個數是和當前這是第幾大步是相同的(其實這個很好理解,我們每一個大步s的指數只減去1個m2,但是卻非常重要);
我們可以來記錄進入了幾次循環來判斷右側最大公約數s那一項的指數減了幾個m2,在代碼中用 t 來記錄;
2.同時它后面的q那一項的指數減去的m2的個數是t-1;
3.我們可以根據m2來求解最后的答案;
4.一個不是關于m2的規律(實在不知道要往哪放但是沒有這個總結代碼可能看不懂):
結合上面的例子,再感性理解一下,我們將左邊的最大公約數除到右邊后,左邊只剩下了m1 / gcd,而右邊呢?由于Si / gcd 后與m1 / gcd 互質,就被拋棄了QwQ~,所以右邊只剩下了最大公約數gcd,So進行下一大步操作的就是 m1 / gcd | gcd(這里省略了指數方便理解) ,也就是說:我們令m1=m1 / gcd,Si = gcd 就可以進行下一大步操作了;
講完了m2的規律后,我們就可以將上面的步驟轉化成代碼啦(其實很短):
m=m1; //拷貝一份m1的值s=S[i]; //拷貝一份S[i]的值 flag=1; //判斷是否有解 t=0; //記錄最大公約數要減幾個m2 while(m!=1){gcdd=gcd(m,s); //第一小步,求最大公約數 if(gcdd==1) {flag=0;break;} //如果互質,那么肯定無解,直接跳出 m/=gcdd; //左邊剩下了m/gcdd q=s/gcdd; //q就是s除以gcdd后剩下的數 s=gcdd; //舍棄q后,右邊剩下了gcdd t++; //每進入一次循環,s的指數就要多減1個m2 }下面就要動動腦筋仔細思考小細節了:
當然這個將m1除到1的過程是沒有鍋的吧,那么哪里還需要注意呢?
就是最后的求n的過程了!其實不知道小伙伴們有沒有看出來我前面的例子中求n總是很含糊(因為還沒講到這里鴨),所以我就要幫幫帶著疑惑看下來的小伙伴們仔細得考慮一下下:
假設我們已經分解到了最后一步,也就是m1已經被我們除到1了,那么右邊的式子我們就可以寫成:
s^(n - t * m2)*{ q^[ n - (t-1)*m2 ]? }? ? ------(這里s,q,t 的含義和上面代碼中的含義相同,還有這里表示指數用了上面總結的公式,不懂得小伙伴可以再回到上面看看)
那么無非有這3種情況:
1. s 與 q 互質,也就是gcd(s,q)=1,這時候n=t * m2;
Why?因為這時候我們要保證右邊那一坨式子最后算出來是個整數,而且這兩個數還是互質的,所以若有一個是分數的話,另外一個數無論多少次方都不會把它乘成整數的qwq,所以我們要保證這兩個數s和q的指數都要>=0,因為我們考慮到s的指數比q的指數多減了個m2,所以我們把s的指數搞成0的話,q的指數一定>0(顯然這時候指數為m2),所以我們只考慮將s的指數弄成0就好啦,顯然這時候n=t*m2;
2.gcdd是q的因數,也就是gcd(s,q)=gcdd,這時候n=ceil((t+(t-1)*tot)*m2 / (tot+1)),tot是q內含s的個數;?
為什么還要把這種情況單獨考慮呢?如果我們像第一種情況只考慮s的指數的話,直接n=t*m2 ?NO!因為既然q是s的倍數,那么必然我們將q進行分解質因數的話,里面會有s(但是指數不同),那么我們將s進行合并的話,指數不再是n-t*m2了,那是多少呢?------取決于q里面含有多少個s!? ?
這是將q里面所有s全部分離出來的代碼:
while(q%s==0) //如果q里面含有s,分離出來 {tot++; //tot表示能分離出來多少個s q/=s; }為了區分,我們將分離出來的s叫做 _s,很顯然 s 和 _s的指數不同是吧,那么我們考慮_s的指數是多少?
由于它是從q中分離出來的,那么顯然_s 和q的指數是相同的,看到上面q的指數是[ n-(t-1)*m2 ],那么_s的指數也是[ n-(t-1)*m2 ];
那么我們是不是可以將s 和 _s合并起來鴨?(底數相同不就可以合并嘛?)
合并后的s的指數就是 [ n-(t*m2) ]+{ tot * [n-(t-1)*m2] }? ?,簡單一記就是:1個s的指數+tot個_s的指數;
再想想哈~我們將q所有的 s都分解出來了,那么剩下的東東就和s互質了~ 所有這不就又變成了第一種情況了?
還是老樣子,我們只要使得s的指數為0就是解了。
所以我們要解這個方程:[ n-(t*m2) ]+{ tot * [n-(t-1)*m2] }? = 0
首先拆括號: n-t * m2 +?{ tot * [ n-(t * m2-m2)]? }
=n- t * m2 +?{ tot * ( n - t * m2 + m2) }
=n - t * m2 + tot *? n - t * m2 * tot + m2* tot
=0
我們將n放在左邊,m2放在右邊,于是我們得到:
n + tot * n = t *m2 +t *m2 *tot - m2 * tot
提取公因式:? (1+tot)* n =m2 *(t + t * tot -tot)
(1+tot) * n = m2 * [ t + tot *(t -1) ]
最后我們將n的系數化1,就得到了答案:?
n = m2 * [ t + tot *(t -1) ] /(1+tot)? ? ? ? ------這過程覺得夠詳細了,我就不信lz還看不懂
So這種情況的n我們也搞定了(哎,有沒有發現其實第一種情況就是tot=0的情況耶,我們完全可以將第一,二中情況合起來寫)
代碼如下:
while(q%s==0) //如果q里面含有s,分離出來 {tot++; //tot表示能分離出來多少個s,第一種情況就是tot=0的情況 q/=s; }if((t*m2+tot*(t-1)*m2)%(tot+1)==0) //我不知道為什么ceil出來的答案不對,只能自己模擬向上取整了 ans=(t*m2+tot*(t-1)*m2)/(tot+1); //沒余數說明正好整除 else ans=(t*m2+tot*(t-1)*m2)/(tot+1)+1;//如果有余數就要+1(這個1就是余數除成小數后再向上取整后得到的) minx=min(minx,ans); //題目要求整體最小時間3.gcd(s,q)≠1,gcdd ;這是什么意思呢?就是當s和q既不互質,也不是倍數關系的時候;?
這種情況有什么魔力呢?你看如果我們用第二種情況的公式的話,顯然tot=0(q不是s的倍數),但是我們注意到gcd(s,q)≠ 1,那么說明它們還有公共部分!
顯然這個公共部分就是gcd(s,q),暫且記為 gc=gcd(s,q),所以我們要像第二種情況中的q分離s一樣,分別將 s 和 q 中的 gc 分離出來(逃 ;
分離的過程和上面幾乎一樣:
while(q%gc==0) //如果q中含有gc就分離 {totq++; //q中含有gc的個數 q/=gc;}while(s%gc==0) //如果s中含有gc就分離 {tots++; //s中含有gc的個數 s/=gc;}So我們就從s中分離出了 tots個gc,從q中分離出了 totq 個gc,當然這兩部分 gc的指數是不同的;
其中 tots個gc的指數是和s的指數相同,均為 n - t * m2;totq 個gc 的指數是和q的指數相同,均為 n - (t -1)* m2 ;
然后我們將所有 gc 的指數合并(就是tots 個gc 和totq 個gc 的指數和):
tots *(n - t * m2)+totq * [ n -(t-1)* m2 ]??
=tots * n - tots * t *m2 + totq * n - totq * m2 *(t-1)
我們已經把s 和 q的公共部分 gc全部都分離出來了,那么剩下的 (s / gc)和(q / gc)一定都與 gc 互質,這其實又轉化成了第一種情況;
所以我們只需要將 gc 的指數搞成0 就好了:
令 gc 的指數為0:
tots * n - tots * t *m2 + totq * n - totq * m2 *(t-1)=0? ??
tots * n + totq * n = tots * t * m2 + totq * m2 * (t-1)? ?-----將有關m2的項移到右邊
(tots + totq)* n= m2 * (tots * t + totq * (t-1))? ? ------提取公因式
n =??m2 * (tots * t + totq * (t-1))/ (tots + totq)? ?------n系數化1
所以這種情況的公式我們也推出來了,所以這個題我們就做完了QwQ~?
if((t*m2*tots+totq*(t-1)*m2)%(tots+totq)==0) //這種情況的公式,注意向上取整 ans=(t*m2*tots+totq*(t-1)*m2)/(tots+totq); else ans=(t*m2*tots+totq*(t-1)*m2)/(tots+totq)+1;下面就是完整代碼啦:
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; int read() //讀入優化 {char ch=getchar();int a=0,x=1;while(ch<'0'||ch>'9'){if(ch=='-') x=-x;ch=getchar();}while(ch>='0'&&ch<='9'){a=(a<<3)+(a<<1)+(ch-'0');ch=getchar();}return a*x; } int n,m1,m2,minx,gcdd,m,s,q,t,flag,tot,ans,tots,totq; //t代表q能分解成多少個s int S[10001]; int gcd(int a,int b) //歐幾里得算法求最大公約數 {if(b==0) return a;else return gcd(b,a%b); } int main() {n=read();m1=read();m2=read();minx=1e9;if(m1==1) //這里一定要注意特判m1==1的情況,不然會TLE {cout<<0; //無需等待,因為任何數都是1的倍數 return 0;}for(int i=1;i<=n;i++) S[i]=read();for(int i=1;i<=n;i++) {tot=0;m=m1; //拷貝一份m1的值s=S[i]; //拷貝一份S[i]的值 flag=1; //判斷是否有解 t=0; //記錄最大公約數要減幾個m2 while(m!=1){gcdd=gcd(m,s); //第一小步,求最大公約數 if(gcdd==1) {flag=0;break;} //如果互質,那么肯定無解,直接跳出 m/=gcdd; //左邊剩下了m/gcdd q=s/gcdd; //q就是s除以gcdd后剩下的數 s=gcdd; //將q舍棄后,右邊只剩下了gcdd t++; //每進入一次循環,s的指數就要多減1個m2 } if(flag){int gc=gcd(q,s); //先求出gcd(q,s) if(gc!=1&&gc!=s) //單獨討論第三種情況 {totq=0;tots=0; //注意清空 while(q%gc==0) //如果q中含有gc就分離 {totq++; //q中含有gc的個數 q/=gc;}while(s%gc==0) //如果s中含有gc就分離 {tots++; //s中含有gc的個數 s/=gc;}if((t*m2*tots+totq*(t-1)*m2)%(tots+totq)==0) //這種情況的公式,注意向上取整 ans=(t*m2*tots+totq*(t-1)*m2)/(tots+totq); else ans=(t*m2*tots+totq*(t-1)*m2)/(tots+totq)+1;minx=min(minx,ans);}else //第一,二種情況 {while(q%s==0) //如果q里面含有s,分離出來 {tot++; //tot表示能分離出來多少個s,第一種情況就是tot=0的情況 q/=s; }if((t*m2+tot*(t-1)*m2)%(tot+1)==0) //我不知道為什么ceil出來的答案不對,只能自己模擬向上取整了 ans=(t*m2+tot*(t-1)*m2)/(tot+1); //沒余數說明正好整除 else ans=(t*m2+tot*(t-1)*m2)/(tot+1)+1;//如果有余數就要+1(這個1就是余數除成小數后再向上取整后得到的) minx=min(minx,ans); //題目要求整體最小時間 }}}if(minx==1e9) cout<<-1; //如果minx沒被更新,說明無解 else cout<<minx;return 0; }這種思路我也不知道是不是正解QwQ,如果有誤請指出,我會認真完善的~
覺得這個思路比較不錯的就點個推薦唄~~~
感謝你的觀看QwQ~?
轉載于:https://www.cnblogs.com/xcg123/p/11047185.html
總結
以上是生活随笔為你收集整理的2019.6.18 校内测试 分析+题解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Py-博客学习50问
- 下一篇: centos7 elk7.1.1安装