isSymmetricDigit

    技术2022-05-19  24

    #include "stdafx.h"

    #include <stdio.h>

    #include <iostream>

    #include <windows.h>

     

    using namespace std;

     

    // x^y

    int power(int x, int y)

    {

    if(x==0)

    return 0;

    if(y==0)

    return 1;

    if(y==1)

    return x;

    return x * power(x,y-1);

    }

     

    // getDigit(12345) = 5

    int getDigitLen(int digit)

    {

    int len = 0;

    while(digit%power(10,len)!=digit)

    len++;

     

    return len;

    }

     

    // isSymmetricDigit(12321) = true

    // isSymmetricDigit(123) = false

    bool isSymmetricDigit(int digit)

    {

    if(digit<100 && digit >-100)

    return true;

     

    int len = getDigitLen(digit);

    int myDigit = 0;

    int course = len;

    int _digit = digit;

    while(course>0)

    {

    myDigit += digit/power(10,course-1) * power(10,len-course);

    digit = digit-digit/power(10,course-1)*power(10,course-1);

    course--;

    }

    return myDigit==_digit;

    }

     

    int _tmain(int argc, _TCHAR* argv[])

    {

    int Positive[3] = {121,1221,12321};

    int Negative[3] = {123,1234,123450};

    for(int i=0;i<3;i++)

    {

    if(!isSymmetricDigit(Positive[i]))

    printf("Error!!! %d Expected 'true', got 'false/r/n",Positive[i]);

    if(isSymmetricDigit(Negative[i]))

    printf("Error!!! %d Expected 'false', got 'true/r/n",Negative[i]);

    }

    return 0;

    }

     


    最新回复(0)