【c笔记】一个很好的编程题

                               一个很好的编程题

    今天在某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 }

 

 

posted on 2010-02-02 19:26  Leon_He  阅读(464)  评论(0编辑  收藏  举报

导航