예제 #1
1
int procs(int num, int base)
{
	int digit[32], len = 0, i = 0;
	int temp = num;
	
	if( temp == 0 )
	{
		printf("Yes\n0\n");
		return 0;
	}
	
	while(temp != 0)
	{
		digit[i] = temp % base;
		temp = temp / base;
		i++;
		len++;
	}
	
	if( isPal(digit, len) == 0 )
	{
		printf("Yes\n");
	}
	else
	{
		printf("No\n");
	}
	
	reverseShowNum(digit, len);
	return 0;
}
예제 #2
1
파일: palsquare.c 프로젝트: nanAdair/USACO
int main()
{
    FILE *fin = fopen("palsquare.in", "r");
    FILE *fout = fopen("palsquare.out", "w");
    int base;
    fscanf(fin, "%d", &base);

    int i;
    for(i = 1; i < 301; i++) {
        char *form;
        form = change(i * i, base);
        if(isPal(form)) {
            form = change(i, base);
            fprintf(fout, "%s ", form);
            form = change(i * i, base);
            fprintf(fout, "%s\n", form);
        }
    }

    fclose(fin);
    fclose(fout);
}
예제 #3
0
파일: 336.cpp 프로젝트: byc1234/oj
 void findCandiates(string &s, vector<string> &left, vector<string> &right) {
     int l = s.length();
     string rStr = string(s.rbegin(), s.rend());
     left.push_back(rStr);
     right.push_back(rStr);
     for (int i = 0; i < l; i++) {
         if (isPal(s, 0, i)) {
             string eStr = s.substr(i+1);
             left.push_back(string(eStr.rbegin(), eStr.rend()));
         }
         if (isPal(s, l-i-1, l-1)) {
             string bStr = s.substr(0, l-1-i);
             right.push_back(string(bStr.rbegin(), bStr.rend()));
         }
     }
 }
 int minCut(string s) {
     int len = s.length();
     if(len <=1) return 0;
     vector<vector<int>> isPal(len, vector<int>(len));
     int curLen = 0;
     for(int i=len-1; i>=0; i--) {
         for(int j=i; j<len; j++) {
             curLen = j-i+1;
             if(curLen<=2) {
                 if(curLen==1)
                     isPal[i][j] = 1;
                 else isPal[i][j] = s[i] == s[j];
             } else {
                 isPal[i][j] = (s[i] == s[j] && isPal[i+1][j-1]);
             }
         }
     }
     vector<int> cut(len, INT_MAX);
     for(int end=0; end<len; end++) {
         for(int st=0; st<=end; st++) {
             if(isPal[st][end])
                 cut[end] = st==0?0:min(cut[st-1]+1, cut[end]);
         }
     }
     return cut[len-1];
 }
예제 #5
0
int main ()
{
	int b1, b2, n = 0;
	unsigned long long int i;
	printf("\nEnter two positive numbers : ");
	scanf("%d%d", &b1, &b2);
	if(b1 < 2 || b2 < 2)
		return 1;
	printf("\nFirst 10 double base palindromes are : \n");
	for (i = 0; n < 10; i++)
		if(isPal(i, b1))
			if(isPal(i, b2))
			{
				printf("%Lu, ", i);
				fflush(stdout);
				n++;
			}
	printf("\b\b  \n");
}
예제 #6
0
int main(){
   int limit = 10000;    // begränsningen på tal vi ska undersöka
   char test[15];        // test
  
    for(int i = 0; i < limit; i++){      
    sprintf(test, "%d", i);             // omvandla i till sträng
     if(isPal(test))                     // om test är palidrom, skriv ut  
        printf("%d\n", i);  
    }

}
예제 #7
0
파일: n-palindrome.c 프로젝트: iCHAIT/rc
int main(void)
{
	int n;

	printf("\nEnter n:");
	scanf("%d",&n);
	if(isPal(n))
		printf("\n%d is palindrome.",n);
	else
		printf("\n%d is not a palindrome.",n);

}
 int minCut(string s) {
     if(s.length() == 0) return 0;
     vector<int> c(s.length()+1, s.length()); c[0] = -1;
     vector<vector<bool> > isPal(s.length(), vector<bool>(s.length(), false));
     for(int i = 1; i <= s.length(); i++){
         for(int j = 0; j < i; j++){
             if(s[j] == s[i-1] && (j+1 >= i-1 || isPal[j+1][i-1])){
                 isPal[j][i] = true;
                 c[i] = min(c[i], c[j]+1);
             }
         }
     }
     return c[s.length()];
 }
    void partitionHelper(string &s, int start, vector<vector<string> > &res, vector<string> &sol, vector<vector<int> > &mp){
        if(start == s.length()){
            res.push_back(sol);
            return;
        }

        for(int i=start; i<s.length(); i++){
            if(isPal(start, i, s, mp)){
               sol.push_back(s.substr(start, i-start+1));
               partitionHelper(s, i+1, res, sol, mp);
               sol.pop_back();
            }
        }
    }
 vector<vector<string> > dfs(const string &s, int x) {
     vector<vector<string> > res;
     if (x >= n) {
         res.push_back(vector<string>());
         return res;
     }
     for (int i = x; i < n; i++) {
         if (isPal(s, x, i)) {
             vector<vector<string> > t = dfs(s, i + 1);
             string ss = s.substr(x, i - x + 1);
             for (int j = 0; j < t.size(); j++)
                 t[j].push_back(ss);
             res.insert(res.end(), t.begin(), t.end());
         }
     }
     return res;
 }
예제 #11
0
파일: 4.cpp 프로젝트: lostrootpass/pmurdoch
int main()
{
	while( (i >= 100) && (palindrome == 0) )
	{
		while( (j >= 100) && (palindrome == 0) )
		{
			if( isPal( i * j ) )
				palindrome = (i * j);

			--j;
		}

		--i;
	}

	std::cout << "largest palindrome is: " << palindrome << "\n";
}
예제 #12
0
int main()
{
	int i,j;
	int m=0;
	
	for(i=999;i>=100;i--)
	{
		for(j=999;j>=100;j--)
		{
			
			if (isPal(i*j)&& (i*j)>m)
			{
				m=i*j;
			}
		}
	}
	printf("%d",m);
}
예제 #13
0
파일: pprime.c 프로젝트: kadircet/Usaco
int main()
{
	FILE *out = fopen("pprime.out","w");
	int i;
	freopen("pprime.in","r",stdin);
	scanf("%d%d",&a,&b);
	fclose(stdin);

	if(a==5&&b==100000000)
	{
		for(i=0;i<779;i++)
			fprintf(out,"%d\n",test9[i]);
		return 0;
	}
	for(a=a;a<=b;a++)
		if(isPal(a)&&isPrime(a))
			fprintf(out,"%d\n",a);
	fclose(out);
	return 0;
}
 int minCut(string s) 
 {
 	vector<int> minCuts(s.length()+1,-1);
 	minCuts[s.length()] = -1;
 	vector<bool> tmp (s.length()+1,false);
 	vector<vector<bool> > isPal(s.length()+1, tmp);
 	for(int i = s.length()-1;i >= 0;i--)
 	{
 		minCuts[i] = s.length() - i - 1;
 		for(int j = i ; j < s.length(); j++)
 		{
 			if(s[i] == s[j] &&(j - i <= 2 || isPal[i+1][j-1]))
 			{
 				isPal[i][j] = true;
 				minCuts[i] = min(minCuts[i],minCuts[j+1] + 1);
 			}
 		}
 	}
 	return minCuts[0];
 }
예제 #15
0
파일: Lab03.cpp 프로젝트: Guard96/2014
int main(int argc, char **argv)
{
	setlocale(0, "");

	char * phrase = strdup("testset");
	int len = strlen(phrase),
		count = 0;

	for (int i = 0; i < len; i++)
	{
		for (int n = 1; n <= len - i; n++)
		{
			if(isPal(phrase, i, n))
			{
				printf("%s\n", GetSub(phrase, i, n));
				count++;
			}
		}
	}

	printf("—уществует %i различных способов получить из строки \"%s\" палиндром.\n", count, phrase);
	return 0;
}