1. 程式人生 > >c語言:找出1到4000中,數字的各位數之和能被4整除的數有多少個?

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個這樣的特殊數字。