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; }