Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<fstream>
- #include<algorithm>
- #define N 10005
- #define M 100005
- using namespace std;
- ifstream fin("cat2pal.in");
- ofstream fout("cat2pal.out");
- int n, c,a;
- int v[N];
- int w[100];
- void Cerinta1()
- {
- int x;
- fin>>a;
- x=a;
- while(x%10==0)x/=10;
- long long p=1,y=0;
- do
- {
- y=y*10+x%10;
- x/=10;
- p*=10;
- }while(x>0);
- int nw=0,q=p, r=y;
- while(r)
- {
- w[++nw]=y%q;
- w[++nw]=r;
- q/=10;
- r/=10;
- }
- int d=0;
- for(int i=0;i<=9;i++)
- {
- d=y*10+i;
- if(d<=a*10) w[++nw]=d;
- d=i*p+y;
- if(d<=a*10) w[++nw]=d;
- }
- for(int i=1;i<nw;i++)
- for(int j=i+1;j<=nw;j++)
- if(w[i]>w[j])
- swap(w[i], w[j]);
- w[0]=0;
- long long p1=0,s1,x1,s2,x2,t1,t2;
- q=1;
- while(q<=a)q*=10;
- for(int i=1;i<=nw;i++)
- if(w[p1]!=w[i])
- {
- p=1;
- while(p<=w[i])p*=10;
- s1=0;
- x1=a*p+w[i];
- t1=x1;
- while(t1)
- {
- s1=s1*10+t1%10;
- t1/=10;
- }
- s2=0;
- x2=w[i]*q+a;
- t2=x2;
- while(t2)
- {
- s2=s2*10+t2%10;
- t2/=10;
- }
- if(s1==x1 || x2==s2)
- w[++p1]=w[i];
- }
- fout<<p1;
- }
- char f[M], f0[M], f1[M];
- long long vi,p,y,z,s,t,j,k,p2;
- void Cerinta2()
- {
- fin>>n;
- for(int i=1;i<=n;i++)
- {
- fin>>v[i];
- f[v[i]]=1;
- }
- for(int i=1;i<=n;i++)
- {
- vi=v[i];
- while(vi && vi%10==0) vi/=10;
- p=1;
- y=0;
- while(vi)
- {
- y=y*10+vi%10;
- vi/=10;
- p*=10;
- }
- do
- {
- if(y*10>=p && f[y]==1)
- {
- z=p*v[i]+y;
- s=z;
- t=0;
- j=0;
- while(s)
- {
- j++;
- t=t*10+s%10;
- s/=10;
- }
- if(z==t)
- {
- k=j-j/2;
- s=0;
- while(k--)
- {
- s=s*10+t%10;
- t/=10;
- }
- if(j%2==0)f0[s]=1;
- else f1[s]=1;
- }
- }
- p/=10;
- y%=p;
- }while(p>=10);
- }
- for(int i=1;i<=n;i++)
- {
- vi=v[i];
- p=1;y=0;
- while(vi)
- {
- y=y*10+vi%10;
- vi/=10;
- p*=10;
- }
- do
- {
- if(f[y]==1)
- {
- z=y*p+v[i];
- s=z;
- t=0;j=0;
- while(s)
- {
- j++;
- t=t*10+s%10;
- s/=10;
- }
- if(z==t && f[y]==1)
- {
- k=j-j/2;
- s=0;
- while(k--)
- {
- s=s*10+t%10;
- t/=10;
- }
- if(j%2==0)f0[s]=1;
- else f1[s]=1;
- }
- }
- y/=10;
- }while(y>0);
- }
- p2=0;
- for(int i=0;i<100000;i++)
- p2+=f0[i]+f1[i];
- fout<<p2;
- }
- int main()
- {
- fin>>c;
- if(c==1) Cerinta1();
- else Cerinta2();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement