Đề: 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.
Bài giải:
Với 1 ≤ n ≤ 3 thì n! ≤ 9 => F(n!) = n!
Với n = 4 thì n! > 9 nên F(n!) = F(S(n!)) = 6
Với n = 5 thì n! > 9 nên F(n!) = F(S(n!)) = 3
Với n ≥ 6 thì n! > 9 nên F(n!) = F(S(n!))
Nếu F(n!) > 9 thì F(n!) có giá trị F(S(n!)) cứ như thế cho đến khi F(n!) ≤ 9
Ta có n! = 1x2x3x4x5x6x...x(n-1)xn = 6!x..x(n-1)xn
Vì 6! chia hết cho 9 nên n! cũng chia hết cho 9
Vì "một số chia hết cho 9 thì có tổng các chữ số chia hết cho 9" F(n!) luôn chia hết cho 9 mà F(n!) ≤ 9 nên F(n!) = 9
Mã nguồn:
#include <stdio.h> void main() { int result, n; scanf_s("%d",&n); switch (n) { case 0: result=0; break; case 1: case 2: case 3: result=1; for (int i=1;i<=n;i++) result*=i; break; case 4: result=6; break; case 5: result=3; break; default: result=9; break; } printf("%d",result); }
0 nhận xét:
Đăng nhận xét