Untitled
unknown
plain_text
2 years ago
2.9 kB
4
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...