今天在某qq群見到有人問下面這個題目,當時沒太多思路,跟他討論了下,突然想出了做法。
於是,馬上編程實踐,沒想到,不久就把它實現了。好有成就感。。。
1+11+111+1111+..........+11.....11(最後為2009個1) 求和中共有幾個1
(以上為10進制數)
我的答案:
1 #include <stdlib.h>
2 #include <stdio.h>
3 #define size 2009
4
5 void main()
6 {
7 int result[size] = {0};//存結果中每位所得到的進位值
8 int count = 0;//結果中1的個數
9 int numOfbit=size;//存現在判斷的位不加進位的值
10
11 for(int i=0;i<size;i++)
12 {//循環判斷結果中每位是否為1,並處理進位
13 if(1 == (numOfbit + result[i])%10)
14 {//判斷此位是否為1
15 count++;
16 }
17
18 if(numOfbit>9)
19 {//處理進位
20 int val = numOfbit%10;
21 int bit = i+1;//要進位的對應位下標
22 do
23 {
24 result[bit] += val%10;
25 val = val%10;
26 bit++;
27 }
28 while(val>=10);
29 }
30 numOfbit--;
31 }
32
33 printf("結果中1的個數為%d\n",count);
34 }
*