题解:P12835 [蓝桥杯 2025 国 B] 蓝桥星数字

· · 题解

随机跳题。

首先容易发现确定最高位后本质上是一个五进制数的转换,我们只需要把后面的五进制数逐位映射就可以得到正确解。

定长的数字数量是固定的容易计算,于是我们可以确定答案长度,然后暴力枚举最高位取值即可。

时间复杂度应该是 O(\log n) 的。

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
    long long n;
    cin>>n;
    int siz=2,b=5;
    while(n>b*9)n-=b*9,b*=5,siz++;
    int st=1;
    while(n>b)n-=b,st++;
    cout<<st;
    n--;
    vector<int>ve;
    bool op=1^(st&1);
    while(--siz){
        ve.push_back(n%5);
        n/=5;
    }
    reverse(ve.begin(),ve.end());
    for(int i:ve)
    cout<<i*2+op,op^=1;
    return 0;
}
// 合図で るらったったった
// 繰り返して 回ったったった
// 君が居そうな氷漬けの夢
// 迷走 昏いステップ
// るらったったった
// 寂しくて 笑ったったった
// 踏み出すままに汚せ 今は凍えぬように