4212: Buy Candy
描述
Mirko buys a lot of candy in the candy shop. He cannot always pay the exact amount so the shopkeeper and he have an agreement. He tells the shopkeeper the smallest bill he has, and she rounds his ammount to the nearest number he can pay. For example, if the smallest bill Mirko has is a hundred bill, and he wants to buy 150 Kunas of candy, the shopkeeper rounds his amount to 200 Kunas. If he wants to buy 149 Kunas of candy, the shopkeeper rounds his amount to 100 Kunas.
Lately, Mirko suspects the shoopkeeper is trying to cheat him. He asked you to help him. Write a program that will help him.
His mother only gives Mirko 1, 10, 100, 1 000, ... , 1 000 000 000 Kuna bills. He never has bills that are not powers of 10. The bills he does have, he has in large amounts.
输入
The first and only line of input contains two integers, C (0 <= C <=1 000 000 000), the price of candy Mirko is going to buy, and K (0 <= K <= 9), number of zeros on the smallest bill Mirko has.
输出
The first and only line of output should contain one integer, C rounded to the nearest amount Mirko can pay.
样例输入
184 1
样例输出
180
题目来源
题目链接:http://tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=4212
题目大意:给你一个数C,要求对C的最后K为进行四舍五入
模拟一下第k位,判断是一些是否大于4
? #include <bits/stdc++.h> using namespace std; #define LL __int64 int main() { LL a,k,i,u,q; while(~scanf("%I64d %I64d",&a,&k)) { for(i=0,u=1;i<k;i++)u*=10; q=a%u; a-=q; if(q*10/u>4)a+=u; printf("%I64d ",a); } return 0; }