U400439题解
  • 板块题目总版
  • 楼主zswtiger
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/4/3 23:23
  • 上次更新2024/4/3 23:34:03
查看原帖
U400439题解
1044969
zswtiger楼主2024/4/3 23:23

非常水的一道题 (我出的 ,基本思路:因为每节课的实力值会递减,所以直接用循环求每节课的实力值,每层循环递减一层,第一节课不减;每算出一节课的实力值 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;
}
2024/4/3 23:23
加载中...