培训第五天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了培训第五天相关的知识,希望对你有一定的参考价值。
今天一种的新生就要军训了,但是我不用去啊红红火火恍恍惚惚哈哈哈哈,我们迈着轻快的步伐,一脸得意地从他们身边路过,沿着熟悉的路,走进那个熟悉的机房
今天依然在学习巨难的多重循环,除了运算步骤没有更多的理解了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的位置以及循环里的循环的位置还是一脸懵逼,求学长解答(今天的问题比较多,希望学长不要嫌弃我,谢谢谢谢,心疼学长一分钟)
愿你的青春不负梦想
加油!共勉!
以上是关于培训第五天的主要内容,如果未能解决你的问题,请参考以下文章