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

Bài toán về sự liên quan giữa tổng các chữ số của n! và dấu hiệu chia hết cho 9

Đề bài:


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