Advertisement
nicuvlad76

Untitled

Dec 3rd, 2022
681
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.43 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. #include<algorithm>
  4. #define N 10005
  5. #define M 100005
  6. using namespace std;
  7. ifstream fin("cat2pal.in");
  8. ofstream fout("cat2pal.out");
  9. int n, c,a;
  10. int v[N];
  11. int w[100];
  12. void Cerinta1()
  13. {
  14.     int x;
  15.    fin>>a;
  16.     x=a;
  17.     while(x%10==0)x/=10;
  18.     long long p=1,y=0;
  19.     do
  20.     {
  21.         y=y*10+x%10;
  22.         x/=10;
  23.         p*=10;
  24.     }while(x>0);
  25.     int nw=0,q=p, r=y;
  26.     while(r)
  27.     {
  28.         w[++nw]=y%q;
  29.         w[++nw]=r;
  30.         q/=10;
  31.         r/=10;
  32.     }
  33.     int d=0;
  34.     for(int i=0;i<=9;i++)
  35.     {
  36.        d=y*10+i;
  37.        if(d<=a*10) w[++nw]=d;
  38.        d=i*p+y;
  39.        if(d<=a*10) w[++nw]=d;
  40.     }
  41.     for(int i=1;i<nw;i++)
  42.         for(int j=i+1;j<=nw;j++)
  43.         if(w[i]>w[j])
  44.         swap(w[i], w[j]);
  45.     w[0]=0;
  46.     long long  p1=0,s1,x1,s2,x2,t1,t2;
  47.     q=1;
  48.     while(q<=a)q*=10;
  49.     for(int i=1;i<=nw;i++)
  50.         if(w[p1]!=w[i])
  51.     {
  52.         p=1;
  53.         while(p<=w[i])p*=10;
  54.         s1=0;
  55.         x1=a*p+w[i];
  56.         t1=x1;
  57.         while(t1)
  58.         {
  59.             s1=s1*10+t1%10;
  60.             t1/=10;
  61.         }
  62.         s2=0;
  63.         x2=w[i]*q+a;
  64.         t2=x2;
  65.         while(t2)
  66.         {
  67.             s2=s2*10+t2%10;
  68.             t2/=10;
  69.         }
  70.         if(s1==x1 || x2==s2)
  71.              w[++p1]=w[i];
  72.     }
  73.     fout<<p1;
  74. }
  75. char f[M], f0[M], f1[M];
  76. long long  vi,p,y,z,s,t,j,k,p2;
  77.  
  78. void Cerinta2()
  79. {
  80.   fin>>n;
  81.   for(int i=1;i<=n;i++)
  82.     {
  83.         fin>>v[i];
  84.         f[v[i]]=1;
  85.     }
  86.  
  87.     for(int i=1;i<=n;i++)
  88.     {
  89.         vi=v[i];
  90.         while(vi && vi%10==0) vi/=10;
  91.         p=1;
  92.         y=0;
  93.         while(vi)
  94.         {
  95.             y=y*10+vi%10;
  96.             vi/=10;
  97.             p*=10;
  98.         }
  99.         do
  100.         {
  101.             if(y*10>=p && f[y]==1)
  102.             {
  103.               z=p*v[i]+y;
  104.               s=z;
  105.               t=0;
  106.               j=0;
  107.               while(s)
  108.               {
  109.                   j++;
  110.                   t=t*10+s%10;
  111.                   s/=10;
  112.               }
  113.               if(z==t)
  114.               {
  115.                   k=j-j/2;
  116.                   s=0;
  117.                   while(k--)
  118.                   {
  119.                       s=s*10+t%10;
  120.                       t/=10;
  121.                   }
  122.                   if(j%2==0)f0[s]=1;
  123.                   else f1[s]=1;
  124.               }
  125.             }
  126.             p/=10;
  127.             y%=p;
  128.         }while(p>=10);
  129.  
  130.     }
  131.  
  132.     for(int i=1;i<=n;i++)
  133.     {
  134.         vi=v[i];
  135.         p=1;y=0;
  136.         while(vi)
  137.         {
  138.             y=y*10+vi%10;
  139.             vi/=10;
  140.             p*=10;
  141.         }
  142.         do
  143.         {
  144.             if(f[y]==1)
  145.             {
  146.                 z=y*p+v[i];
  147.                 s=z;
  148.                 t=0;j=0;
  149.                 while(s)
  150.                 {
  151.                     j++;
  152.                     t=t*10+s%10;
  153.                     s/=10;
  154.                 }
  155.                 if(z==t && f[y]==1)
  156.                 {
  157.                   k=j-j/2;
  158.                   s=0;
  159.                   while(k--)
  160.                   {
  161.                       s=s*10+t%10;
  162.                       t/=10;
  163.                   }
  164.                   if(j%2==0)f0[s]=1;
  165.                   else f1[s]=1;
  166.                 }
  167.             }
  168.             y/=10;
  169.  
  170.         }while(y>0);
  171.  
  172.     }
  173.     p2=0;
  174.     for(int i=0;i<100000;i++)
  175.         p2+=f0[i]+f1[i];
  176.     fout<<p2;
  177.  
  178. }
  179. int main()
  180. {
  181.   fin>>c;
  182.   if(c==1) Cerinta1();
  183.   else Cerinta2();
  184.   return 0;
  185. }
  186.  
  187.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement