非常水的一道题 (我出的 ,基本思路:因为每节课的实力值会递减,所以直接用循环求每节课的实力值,每层循环递减一层,第一节课不减;每算出一节课的实力值 m 都加在每天的实力值 s (每天实力值不会改变)。之后用需要的实力值与每天实力值做除法可得天数。
#include <bits/stdc++.h> \\官方题解
using namespace std;
int main()
{
int a,p,k;
int d; \\d表示需要的天数
cin>>a>>p>>k; \\读入
double s=0,all=0; \\s为每天的实力值
double m=p; \\m是每节课的实力值
for(int i=1;i<=a;i++){
m = m-(i-1)*0.1*m; \\i-1表示第一节课之后课程数;(i-1)*0.1*m即第一节课之后每节课少得的实力值
s += m; \\每天实力值增加m
}
d = k/s +1; \\需要的天数为需要的实力值除去每天的实力值
all = d*s; \\获得总实力值为天数*每天
\\以下是特判
if(k==0) cout<<0<<" "<<0; \\需要0实力值
else if(a==0 || p==0) cout<<"SO WEAK"; \\不上课或者不获得实力
else if(d>20) cout<<"SO WEAK"; \\天数超了
else cout<<d<<" "<<all; \\美美输出答案
return 0;
}