当前位置:首页 > 开发教程 > C语言 >

一个很好的编程题

时间:2013-09-22 09:01 来源: 作者: 收藏

2345软件教程,为您打造全面的软件教程手册,无论是新奇小软件的操作还是专业软件的使用技巧,2345软件教程都会为您解疑释惑。

核心提示:今天在某qq群见到有人问下面这个题目,当时没太多思路,跟他讨论了下,突然想出了做法。

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


上一篇:邮票组合
下一篇:区分旅客国籍

C语言阅读排行

最新文章