int isPalindrome(int number) { int digits, /* Number of digits in the integer */ first, /* Digit of the highest place value */ success = 1; /* True if number is a palindrome */ digits = numberOfDigits(number); while(digits > 1 && success == 1) { first = number; while(first > 9) first *= .1; if(first == number % 10) { success = checkZeroes(&number, digits); /* Checks for leading zero */ number -= first * powTen(digits - 1); /* Removes leftmost */ number *= .1; /* Removes rightmost */ } else success = 0; digits = numberOfDigits(number); } return success; }
void testFunction(){ assert(sameCase('a', 'b')); assert(!(sameCase('a', 'B'))); assert(sameCase('A','B')); assert(numberOfDigits(123)==3); assert(numberOfDigits(123456)==6); assert(!(numberOfDigits(123)==5)); assert(fabs(avg(30, 40)-((30+40)/2)<0.0000001)); }
BOOL isPalindrome(int number){ int multiplier = 1; int digits; BOOL palindrome; //get number of digits to calculate initial multiplier digits = numberOfDigits(number); for (int i = 1; i<digits; i++) { multiplier *= 10; } palindrome = YES; while (digits > 2){ //check if high digit and low digit are same if (number/multiplier != number%10) { palindrome = NO; break; } digits -= 2; //remove 2 matching new digits multiplier /= 100; //calc new multiplier number /= 10; //shift out low digit number %= multiplier*10; //cut off high digit }; //check that last two digits are the same if (digits == 2) { if ((number % 10) == (number / 10)) { palindrome = YES; }else { palindrome = NO; } } return palindrome; }
int getDigit(int num,int index){ index=numberOfDigits(num)-index-1; while (index-->0) { num=num/10; } return num%10; }
void generateMatrix(int n){ int i,j,digitsActualNumber,actualNumber,a=0,digitsMaxNumber; digitsMaxNumber = numberOfDigits((int)pow(2,2*n-2)); for(i=0;i<n;i++){ for(j=0;j<n;j++){ actualNumber = (int)pow(2,a); digitsActualNumber = numberOfDigits(actualNumber); int T = digitsMaxNumber - digitsActualNumber; printSpaceRepeat(T); printf("%d",actualNumber); if(j != n-1) printf(" "); a++; } printf("\n"); a = i + 1; } }
void numberToArray(int ar[], int num){ int i=0; int digits = numberOfDigits(num); while(num){ ar[digits-i-1] = num%10; num = num/10; i++; } }
char InfInt::digitAt(size_t i) const {//PROFILED_SCOPE if (numberOfDigits() <= i) { #ifdef INFINT_USE_EXCEPTIONS throw InfIntException("invalid digit index"); #else std::cerr << "Invalid digit index: " << i << std::endl; return -1; #endif } return (val[i / DIGIT_COUNT] / powersOfTen[i % DIGIT_COUNT]) % 10; }
void validate(char *str1, char *str2, char *str,int ar1[],int ar2[]){ int num1 = arrayToNumber(ar1, strlen(str1)); int num2 = arrayToNumber(ar2, strlen(str2)); int res = num1 + num2; int ar[strlen(str)]; int index1, index2; int p; // printf("%d + %d = %d\n",num1,num2,res); if(numberOfDigits(res) == strlen(str)){ numberToArray(ar, res); if(checkFinalString(str, ar)){ for(int i=0;i<strlen(str);i++){ index1 = isExist(str1,str[i]); index2 = isExist(str2,str[i]); // printf("str1: %s str2: %s ch: %c\n",str1, str2, str[i]); // printf("index1: %d index2: %d index: %d\n",index1, index2, index); if (index1!=-1) { if (ar1[index1] != ar[i]) { return; } } else{ for (p=0; p<strlen(str1); p++) { if (ar1[p] == ar[i]) { return; } } } if (index2!=-1) { if (ar2[index1] != ar[i]) { return; } } else{ for (p=0; p<strlen(str2); p++) { if (ar2[p] == ar[i]) { return; } } } } totalRes++; printf("%d + %d = %d \t",num1,num2, res); if (totalRes%2==0) { printf("\n"); } } } }
int totalNumberOfMatchingNumbers(int num){ int len = numberOfDigits(num); int i=0,j=0,res=0; while(i<len){ j=0; while (j<len) { if(getDigit(num,i) == getDigit(num,j) && i!=j){ res++; } j++; } i++; } return res; }