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:
Ta có nhận xét ban đầu:
F(1!) = F(1) = 1;
F(2!) = F(2) = 2;
F(3!) = F(6) = 6;
F(4!) = F(24) = 6;
F(5!) = F(120) = 3;
Với x = 6 ta thấy: 6! = 1x2x3x4x5x6 = 1x2x3x4x5x2x3 = 1x2x2x3x3x4x5 = 1x2x2x4x5x9 chia hết cho 9
Như vậy từ x = 6 trở đi x! luôn chia hết cho 9 vì x! = K*6! ( với mọi x>6 ).
Dựa vào dấu hiệu chia hết cho 9 ta có: "Một số chia hết cho 9 khi tổng các chữ số của nó chia hết cho 9".
Như vậy x! (x>5) chia hết cho 9 thì S(S(S....S(x)...)) cũng sẽ chia hết cho 9.
Từ đó ta có kết quà:
F(x)=9 với x>5.
Solution tham khảo:
#include<iostream>
using namespace std;
int main()
{
int x;
cout<<"Nhap x: ";
cin>>x;
if (x==1 || x==2)
cout<<x;
if (x==3 || x==4)
cout<<6;
if (x==5)
cout<<3;
if (x>5)
cout<<9;
return 0;
}
Không có nhận xét nào:
Đăng nhận xét