当前位置: 代码迷 >> C语言 >> 怎样计数?
  详细解决方案

怎样计数?

热度:249   发布时间:2006-06-17 13:26:48.0
回复:(args)怎样计数?
以下是引用args在2006-6-17 1:10:45的发言:

输入两个数a和b,然后计算出中间除了尾数是4或7之外有多少个数

例如输入a=1和b=20,其中有4个尾数是4或者7的数,所以中间总共有16个数

算法分析:
1。不难看出,连头带尾在内每10个数中总有1个尾部为4的、1个尾部为7的,所以有8个符合要求。因此至少有(b-a+1)/10*8个符合条件的数
2。零头处理:等价于从 a%10 到 b%10 里面含几个合乎要求的数。
3。代码:
#include<stdio.h>
main( )
{
int a,b,n;
scanf("%d %d",&a,&b);
n = (b-a+1)/10*8;
//楼主自行尝试填充此处,好吗?
printf("There are %d numbers OK.\n",n);
}


----------------解决方案--------------------------------------------------------
楼上的,好象不是 这么简单吧,还有 判断输入的 那 两个 数是否尾数为 四或七 ,

那条式碰到 特殊情况是行不通的^^^^
----------------解决方案--------------------------------------------------------

因为输入的两个数不会是一到十这样,或者是三到八,四到七。。。


----------------解决方案--------------------------------------------------------
偶是遵照您在2楼越简单越好的指示执行的呀!
----------------解决方案--------------------------------------------------------
简单是建立在处理好特殊情况的基础上吧……

是这样的,客户公司的卡都是有号码的,

而号码要跳开末位是4或7的数不要,而且要算出卡的数量

所以才了这个疑问,我一开始也想象和楼上一样,

可是后来发现,输入的开始号和结束号不一定是从0到9,会可以是特殊情况

例如一开始就输入个 823557 和 823564,那就必须先跳过,

然后中间有多少个数,按楼上的式子,开始号823556和823558得出的结果是不同的,

因为每十个里面有八个是建立在从3开始的以8结尾的基础上,但如果输入的在3和8之间,那就是特殊情况

式子不合用……
----------------解决方案--------------------------------------------------------
所以应分为四种情况,开始号和结束号分别在3和8之间还是在3和8之外的情况
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-18 05:53:28
SunShining

等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
  得分:0 

楼上的..人家要算法.不是穷举..要是穷举的话俺的就可以了!


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-18 06:19:46
SunShining

等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
  得分:0 
1.如果你全部浏览过跟贴.那么你发的那个帖子就是白发
2.如果你没浏览过.那么你就更不应该乱发.
3.如果你能研究出1+2=3的第1002种算法.那你就...(不用我说了吧)
----------------解决方案--------------------------------------------------------
  相关解决方案