原题:http://codevs.cn/problem/2235/
.输入机票原价(3到4位的正整数,单位:元),再输入机票打折率(小数点后最多一位数字)。编程计算打折后机票的实际价格(单位:元。计算结果要将个位数四舍五入到十位数“元”)。输入只有一行两个数(两数间用一个空格分隔),第一个为整数,表示机票原价,第二个整数或实数(如是实数,小数点后最多1位数字)表示打折率。
输入样例1:
888 7
输出样例1:
620
输入样例2:
1255 7
输出样例2:
880
PS:
最近开始重新练习算法,也给自己定了一个小目标,每天至少刷一道算法题,然后之前就在CODEVS注册过帐号,但是没有做过里面的题,因此现在也是滕出时间来开始学习。
这道题我的代码是这样的:
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
int oldprice;
double discount;
cin>>oldprice;
cin>>discount;
int a = oldprice*discount;
int yu = a%10;
int chu = a/10;
if(yu>=5)
{
chu = chu+1;
}
int yu2 = chu%10;
int chu2 = chu/10;
if(yu2>=5)
{
chu2 = (chu2+1)*10;
}else
{
chu2 = chu2*10;
}
cout<<chu2;
return 0;
}
可以看出来代码写的还是很乱,也没有遵循代码规范。然后我去看了题解,因为我知道自己这个解决方法实在是有点蠢的,也抱着多学习别人思路的想法。并决定把好的思路学习一下。
思路:round函数的使用。
c++有一个四舍五入的函数,叫做round。(这个都不知道,觉得自己很呆。)
int main()
{
int a;
double b;
scanf("%d %lf",&a,&b);
printf("%d",(int)(round(a*b/100))*10);
return 0;
}