ADA IV型数

#include <stdio.h>
#include <math.h>
/*
题目描述


  Ada三岁了,会掰着指头数数了.她的爸爸既是欢喜,又杂着忧愁.欢喜的是,教了她三年,终于会数了. 忧的是,Ada对数字实在不敏感啊!Ada的爸爸又准备了新的题目训练她.

  ADA IV型数的定义如下: 把一个正整数的各个位上的数字依次组成一个数列,如果该数列是等差数列,则该数为ADA IV型数.如13579和2468都是ADA IV型数, 153和246810都不是ADA IV型数.为了避免不必要的麻烦,规定区间[1,99]的数均为ADA IV型数.

给定一个区间[A,B],其中1<=A<=B<=1000000000,问该区间含有多少个ADA IV型数.这个问题对ADA来说显然太难了,但是我想你行的,试一试吧.

输入


 由多组测试数据组成, 组数不超过100。




每一组测试数据仅有一行,只包含由空格分开的整数A和B。

输出


 对于每一组测试数据,输出对应区间的ADA IV型数的总数目,每组一行。

样例输入
1 100
112 160


样例输出
99
4

*/
int fun(int n){//判断n是不是ada数 n是>=100的数
    int n1,t=n,j=0,i,flag=0;
    int a[9];
    if(n<100)
        return flag;
    else
        {
    n1=log10(n)+1;//得到n的位数
    while(t>0){
        a[j]=t%10;
        t/=10;
        j++;
    }
    for(j=j-1;j-2>=0;j--){
        if(!(a[j]-a[j-1]==a[j-1]-a[j-2]))
            break;
    }
    if(j-2<0)
        flag=1;
    return flag;
    }
}

adaIv(int num1,int num2){
    int max,min,sum=0,t;
    max=num1>num2?num1:num2;
    min=num1<num2?num1:num2;
    t=min;
    if(min<100&&max<100)
        sum=max-min+1;
    else
    {
    for(;min<=max;min++){
        if(fun(min))
            sum++;
    }
    if(t<100)
      sum+=99-t+1;
    }
    printf("%d",sum);
}
int main(int argc, char*argv[])
{
    int num1,num2;
    printf("请输入两个数\n");
    while(scanf("%d%d",&num1,&num2)!=EOF){
     adaIv(num1,num2);
     printf("请输入两个数,ctrl+z退出\n");
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值