赞
踩
为了准备考试,小杨每天都要做题。第一天做了a道题;第二天做了b道题;从第三天起,小杨每天做的题目数量是前两天的总和。
此外,小杨还规定当自己某一天做了大于或等于m题时,接下来的日子,他就不做题了。
请问到了第n天,小杨总共做了多少道题?
总共4行。第一行一个整数a,第二行一个整数b,第三行一个整数m,第四行·一个·整数n。
一行一个整数,表示小杨n天总共做的题数
1
2
10
5
19
1.特殊处理无法递推的项,一般情况是1,2项
- c[1]=a;
- c[2]=b;
2.找规律(第一天做了a道题,第二天做了b道题,第三天做的是前两天之和)
3.按规律预处理(如果项数少就直接预处理)
- #include<iostream>
- using namespace std;
- int c[375];
- int main()
- {
- int a,b,n,i,m,s=0;
- cin>>a>>b>>m>>n;
- c[1]=a;//因为第一二项无法预推,所以要给初值
- c[2]=b;
- for(i=3;;i++)//不知道做了多少天才大于m道题,所以循环第二个语句不写,表示无限循环
- {
- c[i]=c[i-1]+c[i-2];//计算每天做的题数(第三天=前两天做题之和)
- if(c[i]>=m)//如果做的题大于m道题时,结束循环
- {
- break;
- }
- }
- for(i=1;i<=n;i++)//枚举第一天到第n天
- {
- s=s+c[i];//对小杨n天做的题进行求和
- }
- cout<<s;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。