Thứ Sáu, 15 tháng 11, 2013

Bài tập Nhập môn CNTT 3

Đề bài: Tính F(x)

Cho hàm F(x), x ≥ 0 được định nghĩa như sau:
F(x) = x, nếu x ≤ 9
F(x) = F(S(x)), nếu x > 9
Trong đó S(x): tổng các chữ số của x.
Yêu cầu: Hãy viết chương trình tính F(n!), với 1 <= n <= 500.



Giải:

Do đề bài yêu cầu tính F(n!) nên ta có nhận xét sau:

Xét một số n bất kì lớn hơn hoặc bằng 6. Ta có:
N!= 1*2*3*4*5*6*....*N
Do có số 3 và 6 trong phép nhân nên N! này chia hết cho 9

Ta cũng đã biết là một số chia hết cho 9 thì tổng các chữ số của nó cũng chia hết cho 9. Cứ tính tổng các chữ số được số mới, rồi lại lấy số đó tính tổng các chữ số, ta luôn được kết quả cuối cùng là 9
Vì vậy cách giải của ta là: Với mỗi N bé hơn 6, ta tính tay để in ra kết quả, còn với n lớn hơn bằng 6, ta in kết quả là 9.


Có thể viết đoạn code như sau:

1.    #include <iostream>
2.    using namespace std;
3. 
4.    void main()
5.  {
6. int n,kq;
7. cin >> n;
8. switch (n)
9. {
10. case 1: kq=1; break;
11. case 2: kq=2; break;
12. case 3: case 4: break;
13. case 5: kq=3; break;
14. default: kq=9;
15. }
16. cout << kq << endl;
17. }

Không có nhận xét nào:

Đăng nhận xét