今天在某qq群見(jiàn)到有人問(wèn)下面這個(gè)題目,當(dāng)時(shí)沒(méi)太多思路,跟他討論了下,突然想出了做法。
于是,馬上編程實(shí)踐,沒(méi)想到,不久就把它實(shí)現(xiàn)了。好有成就感。。。
1+11+111+1111+..........+11.....11(最后為2009個(gè)1) 求和中共有幾個(gè)1
(以上為10進(jìn)制數(shù))
我的答案:
1 #include
2 #include
3 #define size 2009
4
5 void main()
6 {
7 int result[size] = {0};//存結(jié)果中每位所得到的進(jìn)位值
8 int count = 0;//結(jié)果中1的個(gè)數(shù)
9 int numOfbit=size;//存現(xiàn)在判斷的位不加進(jìn)位的值
10
11 for(int i=0;i
12 {//循環(huán)判斷結(jié)果中每位是否為1,并處理進(jìn)位
13 if(1 == (numOfbit + result[i])%10)
14 {//判斷此位是否為1
15 count++;
16 }
17
18 if(numOfbit>9)
19 {//處理進(jìn)位
20 int val = numOfbit%10;
21 int bit = i+1;//要進(jìn)位的對(duì)應(yīng)位下標(biāo)
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("結(jié)果中1的個(gè)數(shù)為%d\n",count);
34 }