一道二分·答案求解
  • 板块学术版
  • 楼主Mikemao666
  • 当前回复8
  • 已保存回复8
  • 发布时间2020/6/13 22:27
  • 上次更新2023/11/7 00:42:11
查看原帖
一道二分·答案求解
267517
Mikemao666楼主2020/6/13 22:27

原帖;here

这里贴下代码,帮忙修一下谢谢~

#include<bits/stdc++.h>
using namespace std;
long long x;
long long l,r,mid;
inline long long read() {
    char ch = getchar(); long long x = 0, f = 1;
    while(ch < '0' || ch > '9') {
        if(ch == '-') f = -1;
        ch = getchar();
    } while('0' <= ch && ch <= '9') {
        x = x * 10 + ch - '0';
        ch = getchar();
    } return x * f;
}
inline bool check(int y){
    int sum(0);
    for(register long long int i=5;i<=y;i+=5){
        long long int z=i;
        while(z%5==0){
            z/=5;
            sum++;
        }
    }
    return sum<=x;
}
int main(){
    x=read();
    int l(1),r=x*2;
    int flag(0);
    while(l<r){
        mid=(l+r)>>1;
        flag++;
        if(check(mid*5)){
            l=mid;
        }
        else{
            r=mid-1;
        }
        if(flag>=10000000){
            puts("impossible");
            return 0;
        }
    }
    printf("%lld",l*5);
    return 0;
}

楼主之后上不了线了

2020/6/13 22:27
加载中...