PTIT138E spoj PTIT – Bài E – Làm tròn số

Nguồn đề bài: http://www.spoj.com/PTIT/problems/PTIT138E/

1. Đề bài PTIT138E spoj

Cho trước một số nguyên, người ta sẽ làm tròn số này theo quy tắc sau:

  • Nếu số đó lớn hơn 10 thì sẽ được làm tròn đến số hàng chục gần nhất
  • Sau đó nếu kết quả lớn hơn 100 thì làm tròn đến số hàng trăm gần nhất
  • Sau đó nếu kết quả lớn hơn 1000 thì làm tròn đến số hàng nghìn gần nhất
  • …cứ tiếp tục như vậy …

Chú ý: giá trị 5 được làm tròn lên.

Hãy viết chương trình làm tròn số theo quy tắc trên.

Input

  • Dòng đầu tiên chứa số n là số bộ test (không quá 100).
  • n dòng tiếp theo, mỗi dòng ghi một số nguyên x với 0 <= x <= 99999999.

Output

  • Với mỗi bộ test, in ra màn hình trên một dòng kết quả của phép làm tròn.

Example

Input:
9
15
14
4
5
99
12345678
44444445
1445
446
Output:
20
10
4
5
100
10000000
50000000
2000
500

2. Code tham khảo PTIT138E spoj – Làm tròn số

#include <iostream>
using namespace std;
long test, n;

void xuli()
{
    cin>> n;
    long tmp=0, dem=1;
    while (n/10!=0)
    {
        tmp=(n%10+tmp>=5);
        n = n / 10; dem=dem*10;
    }
    cout << (n+tmp)*dem << endl;
}

int main()
{
    cin>> test;
    for (long i=1; i<=test; i++)
        xuli();
    return 0;
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *