75分,第二个点TLE,求解惑
查看原帖
75分,第二个点TLE,求解惑
1301004
Lsk1030楼主2024/3/22 13:19
#include<bits/stdc++.h>  
using namespace std;  
  
int out[10000] = {'\0'};  
int len = 0;  
  
long long int findnum(long long int a, int n) {  
    long long int power = 1;  
    int cnt = 0;  
    while(true) {  
        if(a < n * power) return power;  
        else {  
            power *= n;  
            cnt++;  
        }  
    }  
}  
  
void iterate(long long int x, int n) {  
    long long int now = x;  
    long long int k = findnum(x, n);  
    if(now < n) {  
        out[len++] = now;  
        return;  
    }  
    for(int i = 1; i < n; i++) { // 找digit   
        if(i * k > now) {  
            out[len++] = i - 1;  
            break;	  
        }  
    }  
    iterate(now - out[len - 1] * k, n);  
}  
  
int main() {  
    long long int x;  
    int y;  
    cin >> x >> y;  
    iterate(x, y);  
    for(int i = 0; i < len; i++) {  
        if(out[i] < 10) cout << out[i];  
        else {  
            char temp;  
            temp = out[i] + 55;  
            cout << temp;  
        }  
    }  
    return 0;   
}
2024/3/22 13:19
加载中...