闻灌多
  • 板块灌水区
  • 楼主CJR_Rain
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/24 21:46
  • 上次更新2025/1/25 10:17:48
查看原帖
闻灌多
1382345
CJR_Rain楼主2025/1/24 21:46

题目传送门

代码:

#include <stdio.h>

int num(int x) {
    
    int res = x, cnt = 0;
    
    while(x > 0) {
        
        cnt += x % 3;
        x /= 3;
        res += x;
    }
    
    return res + cnt / 3;
}

int calc(int x) {
    
    int l = 1, r = x, mid = 0;
    
    while(r - l > 1) {
        
        mid = (l + r) >> 1;
        int tmp = num(mid);
        
        if(tmp < x) {
            
            l = mid;
        }
        
        else if(tmp > x) {
            
            r = mid;
        }
        
        else {
            
            break;
        }
    }
    
    return r - l <= 1 ? r : mid;
}

int main() {
    
    int n;
    scanf("%d",&n);
    
    printf("%d",calc(n));
    
    return 0;
}

样例全过,测试点全红,我试过了,五个点大1,五个点大2,求捞

2025/1/24 21:46
加载中...