Submission #67553282


Source Code Expand

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cmath>
using namespace std;
#define ll long long
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

bool check_pal(string s) {
    int left = 0;
    int right = s.size() - 1;
    while (left < right) {
        if (s[left] != s[right]) {
            return false;
        }
        left++;
        right--;
    }
    return true;
}

string toBaseA(ll num, int a) {
    if (num == 0) {
        return "0";
    }
    string dg = "";
    while (num > 0) {
        int digit = num % a;
        dg += to_string(digit);
        num /= a;
    }
    reverse(dg.begin(), dg.end());
    return dg;
}

vector<ll> calPs(ll n) {
    vector<ll> P; 
    
    string nStr = to_string(n);
    int maxL = nStr.size();
    
    for (int len = 1; len <= maxL; len++) {
        int halfLen = (len + 1) / 2;
        ll start = pow(10, (len - 1) / 2);
        ll end = pow(10, halfLen) - 1;
        
        for (ll i = start; i <= end; i++) {
            string fiHalf = to_string(i);
            string PStr; 
            if (len % 2 == 0) {
                string seHalf = fiHalf;
                reverse(seHalf.begin(), seHalf.end());
                PStr = fiHalf + seHalf;
            } else {
                string seHalf = fiHalf.substr(0, fiHalf.size() - 1);
                reverse(seHalf.begin(), seHalf.end());
                PStr = fiHalf + seHalf;
            }
            ll num = stoll(PStr);
            if (num > n) {
                break;
            }
            P.push_back(num);
        }
    }
    
    return P;
}

int main() {
    faster

    int a;
    ll n;
    cin >> a >> n;
    
    vector<ll> P = calPs(n);
    
    ll sum = 0;
    for (ll num : P) {
        string baseA = toBaseA(num, a);
        bool check = true;
        for (char d : baseA) {
            if (d - '0' >= a) {
                check = false;
                break;
            }
        }
        if (check && check_pal(baseA)) {
            sum += num;
        }
    }
    
    cout << sum << endl;
    
    return 0;
}

Submission Info

Submission Time
Task C - Palindromic in Both Bases
User Thanglm2006
Language C++ 20 (gcc 12.2)
Score 350
Code Size 2216 Byte
Status AC
Exec Time 652 ms
Memory 19852 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 350 / 350
Status
AC × 3
AC × 33
Set Name Test Cases
Sample 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt
All 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt
Case Name Status Exec Time Memory
00-sample-01.txt AC 1 ms 3744 KiB
00-sample-02.txt AC 280 ms 19852 KiB
00-sample-03.txt AC 321 ms 19756 KiB
01-01.txt AC 1 ms 3752 KiB
01-02.txt AC 1 ms 3700 KiB
01-03.txt AC 652 ms 19828 KiB
01-04.txt AC 398 ms 19680 KiB
01-05.txt AC 274 ms 19760 KiB
01-06.txt AC 360 ms 19812 KiB
01-07.txt AC 293 ms 19800 KiB
01-08.txt AC 270 ms 19708 KiB
01-09.txt AC 469 ms 19800 KiB
01-10.txt AC 324 ms 19676 KiB
01-11.txt AC 1 ms 3780 KiB
01-12.txt AC 15 ms 4288 KiB
01-13.txt AC 1 ms 3808 KiB
01-14.txt AC 14 ms 4284 KiB
01-15.txt AC 1 ms 3704 KiB
01-16.txt AC 2 ms 3752 KiB
01-17.txt AC 1 ms 3652 KiB
01-18.txt AC 2 ms 3896 KiB
01-19.txt AC 436 ms 19816 KiB
01-20.txt AC 1 ms 3680 KiB
01-21.txt AC 1 ms 3812 KiB
01-22.txt AC 1 ms 3748 KiB
01-23.txt AC 1 ms 3740 KiB
01-24.txt AC 1 ms 3668 KiB
01-25.txt AC 1 ms 3808 KiB
01-26.txt AC 2 ms 3720 KiB
01-27.txt AC 13 ms 4348 KiB
01-28.txt AC 1 ms 3784 KiB
01-29.txt AC 1 ms 3604 KiB
01-30.txt AC 1 ms 3752 KiB