예제 #1
0
 bool isUgly(int num) {
     if(num == 1)
     {
         return true;
     }
     if(num == 0)
     {
         return false;
     }
     if(num % 2 == 0)
     {
         return isUgly(num / 2);
     }
     else if(num % 3 == 0)
     {
         return isUgly(num / 3);
     }
     else if(num % 5 == 0)
     {
         return isUgly(num / 5);
     }
     else
     {
         return false;
     }
 }
 bool isUgly(int num) {
     if (num == 1 || num == 2 || num == 3 || num == 5) return true;
     if (num <= 0) return false;
     if (num%2 == 0) return isUgly(num/2);
     if (num%3 == 0) return isUgly(num/3);
     if (num%5 == 0) return isUgly(num/5);
     return false;
 }
예제 #3
0
 bool isUgly(int num) {
     if (!num) return false;
 	if (num == 1) return true;
     if (num % 2 == 0) return isUgly(num / 2);
     if (num % 3 == 0) return isUgly(num / 3);
     if (num % 5 == 0) return isUgly(num / 5);
     return false;
 }
예제 #4
0
 bool isUgly(int num) {
     if (num <= 0) {
         return false;
     }
     if (num <= 5) {
         return true;
     }
     return (num % 2 == 0 && isUgly(num / 2)) ||
            (num % 3 == 0 && isUgly(num / 3)) ||
            (num % 5 == 0 && isUgly(num / 5));
 }
예제 #5
0
int main(int argc, char** argv) {
    FILE* fp;
    char str[MAX_CHARS];
    char eqn[MAX_LEN];
    int ops[MAX_CHARS];  // none, '-' or '+'
    int numC, numPossible, numLoc;
    int i, eLen, numU;
    int64 val;

    if(argc != 2) {
        printf("USAGE: UglyNumbers <fileContainingTestVectors>\n");
        return 1;
    }
    fp = fopen(argv[1], "r");
    if(fp == NULL) {
        printf("Failed to open the input file '%s' for reading!\n", argv[1]);
        return 2;
    }
    while(!feof(fp)) {
        str[0] = '\0';
        fgets(str, MAX_CHARS, fp);
        numC = stringLen(str, MAX_CHARS);
        if(str[0] == '\0') {
            continue;
        }
        if(numC <= 0) {
            continue;
        }
        // special case
        if(numC == 1) {
            printf("%d\n", (isUgly(getInt64(str, 0, 1)))? 1 : 0);
            continue;
        }
        numLoc = numC - 1;
        numU = 0;
        // number of possibilities
        numPossible = 1;
        for(i=1;i<numC;++i,numPossible*=3);
        // enumerate all of them!
        for(i=0;i<numPossible;++i) {
            int2tertiary(ops, numLoc, i);
            eLen = generateEqn(eqn, ops, str, numC);
            val = evaluateEqn(eqn, eLen);
            if(isUgly(val)) {
                ++numU;
            }
            //printf("%s  %ld %d %d\n", eqn, val, numU, i);
        }
        printf("%d\n", numU);
    }
    fclose(fp);
    return 0;
}
예제 #6
0
 bool isUgly(int num) {
     if(num <= 0)
         return false;
     else if(num == 1)
         return true;
     else if(num % 2 == 0)
         return isUgly(num / 2);
     else if(num % 3 == 0)
         return isUgly(num / 3);
     else if(num % 5 == 0)
         return isUgly(num / 5);
     else 
         return false;
 }
예제 #7
0
파일: isUgly.c 프로젝트: zeng-zc/leetcode
int main(){
    int arr[]={1, 6, 8, 14};
    int len = sizeof arr/sizeof arr[0];
    for(int i=0; i<len; i++)
        printf("n=%d, result=%d\n", arr[i], isUgly(arr[i]));
    return 0;
}
int nthUglyNum(int n){
    int count=1,i=1;
    while(count<n){
        i++;
        if(isUgly(i))
            count++;
    }
    return i;
}
예제 #9
0
 int nthUglyNumber(int n) { // time limit exceed at 500
     if (n <= 0) { return 0; }
     int cur = 0;
     while (n > 0) {
         ++cur;
         while (!isUgly(cur)) { ++cur; }
         --n;
     }
     return cur;
 }
예제 #10
0
int main(){
	srand((unsigned)time(0));
	int rand_num = rand() % 11;
	if (isUgly(rand_num))
		printf("%d is a ugly number.", rand_num);
	else
		printf("%d isn't a ugly number.", rand_num);

	// getchar();
	return 0;
}
예제 #11
0
int GetUglyNumber2(int index)
{
    int number=0;
    int finded=0;
    while(finded<index)
    {
        number++;
        if(isUgly(number))
            finded++;
    }
    return number;
}
예제 #12
0
파일: Ugly_Number.cpp 프로젝트: lilgcheng/C
int main()
{
	int n;
	scanf("%d",&n);
	if(isUgly(n)){
		printf("YES\n");
	}else{
		printf("NO\n");
	}
	system("pause");
	return 0;
}
예제 #13
0
 bool isUgly(int num) {
   if (num <= 0)  return false;
   if (num == 1)  return true;
   int factors[3] = {2, 3, 5};
   for (int i = 0; i < 3; i++) {
     if (num % factors[i] == 0) {
       num /= factors[i];
       return isUgly(num);
     }
   }
   return false;
 }
예제 #14
0
파일: ugly_num.c 프로젝트: nmrnmr/Test
int main (void) {
    int x =4;
    bool res = isUgly(x);
    printf("Input %d %s ugly\n", x, res == true? "is" : "is not");
    return 0;
}
예제 #15
0
int main() {
	int number = 14;
	isUgly(number);
}
예제 #16
0
#include "Catch/single_include/catch.hpp"

#include "UglyNumber.hpp"

TEST_CASE("UglyNumber") {
	REQUIRE(isUgly(1) == true);
	REQUIRE(isUgly(2) == true);
	REQUIRE(isUgly(3) == true);
	REQUIRE(isUgly(4) == true);
	REQUIRE(isUgly(5) == true);
	REQUIRE(isUgly(6) == true);
	REQUIRE(isUgly(8) == true);
	REQUIRE(isUgly(14) == false);
}