- Back to Home »
- NM CNTT1 - Bài 03 - Tuần 05
Posted by : Unknown
15 November 2013
Đề bài: Cho \[F(x),x \ge 0\] được định nghĩa như sau:
\[F(x) = \left\{ \begin{array}{c} x,x \le 9\\ F(S(x)),x > 9 \end{array} \right.\]
Trong đó S(x): tổng các chữ số của x
Hãy viết chương trình tính F(n!) với 1<=n<=500Ý tưởng:
Với:
n=0: F(0!) = 1
n=1: F(1!) = 1
n=2: F(2!) = F(1.2) = F(2) = 2
n=3: F(3!) = F(1.2.3) = F(6) = 6
n=4: F(4!) = F(1.2.3.4) = F(24) = F[S(24)] = 6
n=5: F(5!) = F(1.2.3.4.5) = F(120) = F[S(120)] = 3
n=6: F(6!) = F(1.2.3.4.5.6) = F(720) = F[S(720)] = 9
n=7: F(7!) = F(1.2.3.4.5.6.7) = F(5040) = F[S(5040)] = 9
n=8: F(8!) = F(1.2.3.4.5.6.7.8) = F(40320) = F[S(40320)] = 9
...
n=15: F(15!) = F(1307674368000) = F[S(1307674368000)] = 9
Nhận xét:
Với n=6, ta có
\[6! = 1.2.3.4.5.6 = {1.2^4}{.3^2}.5 \vdots 9\]
vậy
\[S(6!) \vdots 9\]
Do đó
\[n \ge 6,S(n!) = 9 => F(n!) = 9\]
Một cách tổng quát, ta có
\[F(x) = \left\{ {\begin{array}{*{20}{l}}
{1,x = 0}\\
{1,x = 1}\\
{2,x = 2}\\
{6,x = 3}\\
{6,x = 4}\\
{3,x = 5}\\
{9,x \ge 6}
\end{array}} \right.\]
Mã nguồn:
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
switch (n)
{
case 0: printf("1\n"); break;
case 1: printf("1\n"); break;
case 2: printf("2\n"); break;
case 3: printf("6\n"); break;
case 4: printf("6\n"); break;
case 5: printf("3\n"); break;
default: printf("9\n"); break;
}
return 0;
}
int main()
{
int n;
scanf("%d", &n);
switch (n)
{
case 0: printf("1\n"); break;
case 1: printf("1\n"); break;
case 2: printf("2\n"); break;
case 3: printf("6\n"); break;
case 4: printf("6\n"); break;
case 5: printf("3\n"); break;
default: printf("9\n"); break;
}
return 0;
}
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
switch (n)
{
case 0: printf("1\n"); break;
case 1: printf("1\n"); break;
case 2: printf("2\n"); break;
case 3: printf("6\n"); break;
case 4: printf("6\n"); break;
case 5: printf("3\n"); break;
default: printf("9\n"); break;
}
return 0;
}
int main()
{
int n;
scanf("%d", &n);
switch (n)
{
case 0: printf("1\n"); break;
case 1: printf("1\n"); break;
case 2: printf("2\n"); break;
case 3: printf("6\n"); break;
case 4: printf("6\n"); break;
case 5: printf("3\n"); break;
default: printf("9\n"); break;
}
return 0;
}