培訓第五天
今天一種的新生就要軍訓了,但是我不用去啊紅紅火火恍恍惚惚哈哈哈哈,我們邁著輕快的步伐,一臉得意地從他們身邊路過,沿著熟悉的路,走進那個熟悉的機房
今天依然在學習巨難的多重循環,除了運算步驟沒有更多的理解了TAT
今天還是在刷多重循環相關題目,目前已經瀕臨不會寫代碼TAT(我可能要像焦老師說的一樣幾天寫一個代碼了2333)
以下是一些很有難度的題目(今天刷的每道題都很有難度)以及自己的理解:
①兔子總數問題:這道題的方法真的是太巧妙了!!!若第一個月的兔子對數為a,第二個月的兔子對數為b,第三個月的兔子對數為c,則有a+b=c;接著,若第二個月的兔子對數為a‘,第三個月的兔子對數為b’,第四個月的兔子對數為c‘,則有a’+b‘=c’。因為a‘=b,b’=c,所以要把b賦值給a,把c賦值給b,即a=b,b=c,每次循環運算時,這個月、上個月、上上個月就會往後推一個月,從而實現循環
這道題要格外註意,從這道題中汲取解決方法和邏輯推理能力
此外,這道題還涉及到斐波那契數列,其用函數表達為f(n)=f(n-1)+f(n-2)
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 long long a=1,b=2,c=0; 6 int x; 7 cin>>x; 8 if(x==1) cout<<a<<endl; 9 if(x==2) cout<<b<<endl; 10 if(x>=3) 11 for(int i=3;i<=x;i++) 12 { 13 c=a+b; 14 a=b; 15 b=c; 16 } 17 cout<<c<<endl; 18 return 0; 19 }
②再求素數:這道題在寫if的條件,思維會被打亂,因此一定要靜下心來,一點一點分析條件,很多次都因為“{}”以及for循環中的for循環位置錯誤導致輸出錯誤的答案,最後類比了求完數的格式才解出來,格式正確還是要建立在充分理解的基礎上吧;另外對於flag的用法又有了一些了解,即先假設flag成立(存在?),在之後的運算中給出條件,若滿足,則flag成立,反之不成立,最後根據題目需求輸出當flag成立或不成立時的答案
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 int main() 5 { 6 int x; 7 cin>>x; 8 for(int i=2;i<=x;i++) 9 { 10 bool flag=0; 11 for(int j=2;j<=sqrt(i*1.0);j++) 12 { 13 if(i==2) flag=0; 14 if(i%j==0) {flag=1; break;} 15 if(i%j!=0&&i!=2) flag=0; 16 } 17 if(flag==0) cout<<i<<endl; 18 } 19 return 0; 20 }
③韓信點兵:這道題不是太難,還是輸入的格式問題,剛開始else加到哪都不對,後來換了一種表達方式,就解出題了,還是不太理解for循環與if配合使用時的格式
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int x,a,b,c; 6 cin>>a>>b>>c; 7 while((x-a)%3!=0||(x-b)%5!=0||(x-c)%7!=0) 8 { 9 x++; 10 } 11 if(10<=x&&x<=100) cout<<x<<endl; 12 if(x>100||x<10) cout<<"No answer"<<endl; 13 return 0; 14 }
④質因子分解:回去補充
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n,k=0; 6 cin>>n; 7 while(n>=2) 8 { 9 for(int i=2;i<=n;i++) 10 while(n%i==0) 11 { 12 if(k==0) {cout<<n<<‘=‘<<i;k=1;} 13 else {cout<<‘*‘<<i;} 14 n=n/i; 15 } 16 break; 17 } 18 return 0; 19 }
今天又犯了一些低級錯誤,比如:
①“{}”只加了一半,以後要仔細檢查,輸入時要細心
②沒看清題,把“No answer”打成了“No Answer”,輸入前一定要仔細看題
③少加“;”,還是要仔細檢查,除了for、if、while以外,其他的都要輸入“;”
今天做出的題不多,因為題實在是太難了TAT(也可能是我智商不夠用吧2333),最主要的收獲還是對解題思路以及解題步驟的理解
另外,對於break的用法、“{}”的位置、cout的位置以及循環裏的循環的位置還是一臉懵逼,求學長解答(今天的問題比較多,希望學長不要嫌棄我,謝謝謝謝,心疼學長一分鐘)
願你的青春不負夢想
加油!共勉!
培訓第五天