题目链接:hoj2186
这题不是难题,一开始处理数据,得到三个数是没什么问题的,出问题的是后面,每一个小队十个人派一个向导,不足十个人则也派一位。关于这一段的处理,很明显,原来的思路是比较乱的,安静坐下来,这个其实很好处理。
//首先将这个计算出来的数划分范围,
//如果是小于等于10的数据只需直接加一 (小于10的取余是自身,且必小于十则可默认为1)
(而10的话取余为0,除10结果为1).
// 如果不是,则说明该数整除10大于0,那么需要接着判断该数是否存在余数,若存在接着加一
//三个数据判断根据相同
# include <iostream>
# include <math.h>
using namespace std;
int main() {
int num;
cin >> num;
while (num--) {
double x1 = 0;
cin >> x1;
if (x1 < 10 || x1>1000) {
continue;
}
int num1, num2, num3;
num1 = x1 / 2.0;
num2 = (x1 - num1) * 2.0 / 3;
num3 = (x1 - num1 - num2);
//cout << num1 << " " << num2 << " " << num3 << endl;
int z1 = 0, z2 = 0, z3 = 0;
if (num1<=10) {
z1+=1;
}
else {
z1+=num1/10;
if(num1%10>0)
z1++;
}
if (num2<=10) {
z2+=1;
}
else {
z2+=num2/10;
if(num2%10>0)
z2++;
}
if (num3<=10) {
z3+=1;
}
else {
z3+=num3/10;
if(num3%10>0)
z3++;
}
cout << z1+z2+z3 << endl;
//int sum = ceil(num1 / 10.0) + ceil(num2/ 10.0) + ceil(num3 / 10.0);
//cout << sum << endl;
}
return 0;
}
ps:关于ceil()
# include <iostream>
# include <math.h>
using namespace std;
int main() {
double num;
// cin >> num;
while(cin>>num){
cout<<ceil(num)<<endl;//向上取整(小于原来的数值)
cout<<floor(num)<<endl;//向下取整(大于原来的数值)
cout<<round(num)<<endl;//四舍五入取整 4.56 取5 4.45 取4
}
return 0;
}