Untitled
unknown
plain_text
3 years ago
2.9 kB
5
Indexable
#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;
}Editor is loading...