今天在某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
",count);
34 }
希望这篇
C语言实例 一个很好的编程题的文章能够对您有所帮助,如果您觉得这篇网站维护教程有用的话,别忘了推荐给您的朋友哦!如果您有好的经验方法,不妨拿出来和大家一起分享:假如每个人都拿出一个经验,那么我们都将额外的获取一堆他人的经验。
请记住本站永久域名:(黑客防线网安服务器维护方案维护基地)Www.Rongsen.Com.Cn