1到999中,有多少个整数的各位上的数字和能被4整除
2个回答
展开全部
可以用数组做此题:
取n位数除以3余数为i且这个数里含4的个数为b(i,n)
且对于任意的n位数只需讨论从10^(n-1)到999...9
这9*10^(n-1)个数
将这些数分成三类3k-2,3k-1,3k
且易知道每一类数含个数为
3*10^(n-1)
这三类数除以3的余数为1,2,0
则对于1位数有b(0,1)=0,b(1,1)=1(4可以),b(2,1)=0
现在讨论其三数组的关系
讨论思想为在n-1为数的基础上在其末尾加一个数变成n位数
a(n)表示n为数:
a(n-1)
(加数余0)
(加数余1)
(加数余2)
3k-2
{2,5,8}
{0,3,6,9}
{1,4,7}
3k-1
{1,4,7}
{2,5,8}
{0,3,6,9}
3k
{0,3,6,9}
{1,4,7}
{2,5,8}
加数为末尾加数:这里相当于b(0,n-1),b(1,n-1),b(2,n-1)已知
求b(0,n):对于3k这种数要加数且被3整除且含4有
4*b(0,n-1)
对于3k-1这种数分两种情况(1)末尾有4
则每一个这种数为所求
就有3*10^(n-2)个,(2)末尾不含4,有2*b(2,n-1)
对于3k-2这种数就有3*b(1,n-1)
所以有
b(0,n)=4*b(0,n-1)+3*b(1,n-1)+2*b(2,n-1)+3*10^(n-2)
同理
b(1,n)=2*b(0,n-1)+4*b(1,n-1)+3*b(2,n-1)+3*10^(n-2)
b(2,n)=3*b(0,n-1)+2*b(1,n-1)+4*b(2,n-1)+3*10^(n-2)
下面希望你学过线性代数
取b(n)=[b(0,n),b(1,n),b(2,n)]'('表示转置)
c(n)=3*10^(n-1)*[1,1,1]'
.....|4
3
2|
q=
|2
4
3|为一个3×3的矩阵
.....|3
2
4|
有b(n)=q*b(n-1)+c(n-1)
c(1)=3*[1,1,1]',b(1)=[0,1,0]'
接下来就是算
可得b(2)=[6,7,5]';b(3)=[85,85,82]'
b(4)=[1059,1056,1053]';b(5)=[12510,12501,12501]';
b(6)=[142545,142527,142536]';
b(7)=[1582833,1582806,1582833]'..
你要的是5为数的就是b(5)的第一个12510
(注q那里为了保持格式用了.....)
取n位数除以3余数为i且这个数里含4的个数为b(i,n)
且对于任意的n位数只需讨论从10^(n-1)到999...9
这9*10^(n-1)个数
将这些数分成三类3k-2,3k-1,3k
且易知道每一类数含个数为
3*10^(n-1)
这三类数除以3的余数为1,2,0
则对于1位数有b(0,1)=0,b(1,1)=1(4可以),b(2,1)=0
现在讨论其三数组的关系
讨论思想为在n-1为数的基础上在其末尾加一个数变成n位数
a(n)表示n为数:
a(n-1)
(加数余0)
(加数余1)
(加数余2)
3k-2
{2,5,8}
{0,3,6,9}
{1,4,7}
3k-1
{1,4,7}
{2,5,8}
{0,3,6,9}
3k
{0,3,6,9}
{1,4,7}
{2,5,8}
加数为末尾加数:这里相当于b(0,n-1),b(1,n-1),b(2,n-1)已知
求b(0,n):对于3k这种数要加数且被3整除且含4有
4*b(0,n-1)
对于3k-1这种数分两种情况(1)末尾有4
则每一个这种数为所求
就有3*10^(n-2)个,(2)末尾不含4,有2*b(2,n-1)
对于3k-2这种数就有3*b(1,n-1)
所以有
b(0,n)=4*b(0,n-1)+3*b(1,n-1)+2*b(2,n-1)+3*10^(n-2)
同理
b(1,n)=2*b(0,n-1)+4*b(1,n-1)+3*b(2,n-1)+3*10^(n-2)
b(2,n)=3*b(0,n-1)+2*b(1,n-1)+4*b(2,n-1)+3*10^(n-2)
下面希望你学过线性代数
取b(n)=[b(0,n),b(1,n),b(2,n)]'('表示转置)
c(n)=3*10^(n-1)*[1,1,1]'
.....|4
3
2|
q=
|2
4
3|为一个3×3的矩阵
.....|3
2
4|
有b(n)=q*b(n-1)+c(n-1)
c(1)=3*[1,1,1]',b(1)=[0,1,0]'
接下来就是算
可得b(2)=[6,7,5]';b(3)=[85,85,82]'
b(4)=[1059,1056,1053]';b(5)=[12510,12501,12501]';
b(6)=[142545,142527,142536]';
b(7)=[1582833,1582806,1582833]'..
你要的是5为数的就是b(5)的第一个12510
(注q那里为了保持格式用了.....)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询