Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int lg(int n)
- {
- int k = 0;
- while(n>0)
- {
- k++;
- n/=10;
- }
- return k-1;
- }
- int pw10(int n)
- {
- int t = 1;
- while(n>0)
- {
- t*=10;
- n--;
- }
- return t;
- }
- bool verif_palindrom(int n)
- {
- int l = lg(n);
- for(int i = 0; i<(l+1)/2; i++)
- {
- int c1 = n/pw10(i)%10;
- int c2 = n/pw10(l-i)%10;
- if(c1!=c2) return false;
- }
- return true;
- }
- int show_partitions(int a, int n)
- {
- int l = lg(a) + 1;
- for(int i = 0; i < l - n + 1; i++)
- {
- int pt = (a%pw10(l-i))/pw10(l - n -i);
- if(verif_palindrom(pt)) return pt;
- }
- return -1;
- }
- int main()
- {
- long a = 123145;
- int n = -1;
- int o = lg(a) + 1;
- do
- {
- n = show_partitions(a, o);
- o--;
- }
- while(n == -1 && o >=3);
- if(n == -1)
- {
- cout<<a;
- while(a>0)
- {
- cout<<a%10;
- a/=10;
- }
- }
- else if(n == a) cout<<"DA";
- else cout<<n;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement