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");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章