c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?

找出1到4000中,数字的各位数之和能被4整除的数,如:745:7+4+5=16,16可以被4整除;28:2+8=10,10不能被4整除;745就是这样的特殊数字,而28不是,求:这样的数字共有多少个?

解:

(1)对于4000,4+0+0+0=4,显然4000是满足条件的数字;

(2)对于1到3999,我们把每个数字看成4位[][][][]的形式,第一位[]取0到3,后3位取[0][0][0]到[9][9][9],用sum表示4位数字的和:

2.1:若后3位为一个奇数,则第1位取1或3,必定可以使sum能被4整除,如sum=15,sum+1=16;sum=17,sum+3=20即可满足条件;

2.2:若后3位之和为一个偶数,不妨用sum1表示后3位数字的和,则分两种情况讨论,令sum2=sum1/2,如果sum2仍然为偶数,则sum1能被4整除,第1位置0,即可满足条件;如果sum2为奇数,则sum1不能被4整除,第1位置2,sum=sum1+2即可满足条件;

 因此后3位取[0][0][0]到[9][9][9]时,总能在第1位找到一个数,使sum能被4整除,由于没有数字0,故1到3999共有1000-1=999个数字满足条件;

综上,一共有999+1=1000个这样的特殊数字。

你可能感兴趣的:(数字,C语言,找出)