Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.9 kB
2
Indexable
Never
#include <bits/stdc++.h>

using namespace std;

ifstream fin("cat2pal.in");
ofstream fout("cat2pal.out");

long long int c, n, a, cnt, nrcif_a, p=1, nr, nr2, nr3;
vector<long long int> v, s;

bool isPalindrom(long long int x){
    long long int ras=0, cx=x;
    while(x>=1){
        ras=ras*10+x%10;
        x/=10;
    }
    if(ras==cx) return true;
    return false;
}

long long int rasturnat(long long int x){
    long long int ras=0;
    while(x>=1){
        ras=ras*10+x%10;
        x/=10;
    }
    return ras;
}

int nrcif(long long int x){
    long long int cnt=0;
    while(x>=1){
        cnt++;
        x/=10;
    }
    return cnt;
}

long long int concat1(long long int x, long long int y){
    long long int conct=y;
    conct=pow(10, nrcif(y))*x+y;
    return conct;
}

void solve(){
    fin>>c;
    if(c==1){
        int i=0, j=0;
        fin>>a;
        nr=rasturnat(a);
        nr2=nr;
        nr3=nr;
        nrcif_a=nrcif(a);
        s.push_back(nr);
        p=pow(10, nrcif_a-1);
        while(p>=1){
            if(isPalindrom(concat1(a, nr))){
                for(i=0; i<s.size(); i++)
                    if(s[i]==nr) break;
                if(i==s.size()){
                    s.push_back(nr);
                }
            }
            if(isPalindrom(concat1(nr2, a))){
                for(i=0; i<s.size(); i++)
                    if(s[i]==nr2) break;
                if(i==s.size()){
                    s.push_back(nr2);
                }
            }
            nr2/=10;
            nr=nr%p;
            p/=10;
        }
        for(int i=1; i<=9; i++){
            long long int aux=a;
            long long int x=i;
            while(aux){
                x=x*10+aux%10;
                aux/=10;
            }
            if(x<=a*10){
                s.push_back(x);
            }
        }
        if(a%10!=0){
            for(int i=0; i<=9; i++){
            long long int x=concat1(nr3, i);
            if(x<=a*10){
                for(j=0; j<s.size(); j++)
                    if(x==s[i]) break;
                if(j==s.size()){
                    s.push_back(x);
                }
            }
        }
    }
    fout<<s.size();
}
    if(c==2){
        fin>>n;
        for(int i=0; i<n; i++){
            fin>>a;
            v.push_back(a);
        }
        for(int i=0; i<n; i++){
            if(isPalindrom(concat1(v[i], v[i]))){
                    cnt++;
            }
            for(int j=i+1; j<n; j++){
                if(isPalindrom(concat1(v[i], v[j]))){
                    cnt++;
                }
                if(isPalindrom(concat1(v[j], v[i]))){
                    cnt++;
                }
            }
        }
        fout<<cnt;
    }
}

int main(){
    solve();
    return 0;
}