Advertisement
Guest User

Palindrom

a guest
Jun 28th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int lg(int n)
  6. {
  7.     int k = 0;
  8.     while(n>0)
  9.     {
  10.         k++;
  11.         n/=10;
  12.     }
  13.     return k-1;
  14. }
  15.  
  16. int pw10(int n)
  17. {
  18.     int t = 1;
  19.     while(n>0)
  20.     {
  21.         t*=10;
  22.         n--;
  23.     }
  24.     return t;
  25. }
  26.  
  27. bool verif_palindrom(int n)
  28. {
  29.     int l = lg(n);
  30.  
  31.     for(int i = 0; i<(l+1)/2; i++)
  32.     {
  33.         int c1 = n/pw10(i)%10;
  34.         int c2 = n/pw10(l-i)%10;
  35.         if(c1!=c2) return false;
  36.     }
  37.  
  38.     return true;
  39. }
  40.  
  41. int show_partitions(int a, int n)
  42. {
  43.     int l = lg(a) + 1;
  44.  
  45.     for(int i = 0; i < l - n + 1; i++)
  46.     {
  47.         int pt = (a%pw10(l-i))/pw10(l - n -i);
  48.  
  49.         if(verif_palindrom(pt)) return pt;
  50.  
  51.     }
  52.     return -1;
  53. }
  54.  
  55. int main()
  56. {
  57.     long a = 123145;
  58.     int n = -1;
  59.  
  60.     int o = lg(a) + 1;
  61.  
  62.     do
  63.     {
  64.         n = show_partitions(a, o);
  65.         o--;
  66.     }
  67.     while(n == -1 && o >=3);
  68.  
  69.     if(n == -1)
  70.     {
  71.         cout<<a;
  72.         while(a>0)
  73.         {
  74.             cout<<a%10;
  75.             a/=10;
  76.         }
  77.     }
  78.     else if(n == a) cout<<"DA";
  79.     else cout<<n;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement