奇怪问题
  • 板块学术版
  • 楼主SJZ2010
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/20 10:42
  • 上次更新2023/11/3 08:42:51
查看原帖
奇怪问题
809729
SJZ2010楼主2023/7/20 10:42

这个程序没干啥就

Process returned -1073741571 (0xC00000FD) execution time : 0.868 s

#include <iostream>
#include <string>

inline long long max(long long x, long long y){
    return x>y?x:y;
}
struct Bigint{
    int l, a[100005];
    Bigint(std::string str){
        for(int i=0;i<str.size();i++)
            a[i+1] = str[i]-'0';
        l = str.size();
    }
    inline void print(){
        for(long long i=max(l, 1ll);i>=1;i--)
            std::cout << a[i];
    }
    inline void flatten(int L){
        l = L;
        for(int i=1;i<=L;i++)
            a[i+1] += a[i]/10, a[i] %= 10;
        for(;!a[l];)
            l--;
    }
};
inline Bigint operator*(Bigint a, long long b){
    for(int i=1;i<=a.l;i++)
        a.a[i] = a.a[i]*b;
    a.flatten(a.l+30);
    return a;
}
inline bool operator < (Bigint a, Bigint b){
    if(a.l!=b.l)
        return b.l > a.l;
    for(int i=a.l;i>=1;i--)
        if(b.a[i]>a.a[i])
            return true;
    return false;
}
inline bool operator == (Bigint a, Bigint b){
    if(a.l!=b.l)
        return false;
    for(int i=a.l;i>=1;i--)
        if(a.a[i]!=b.a[i])
            return false;
    return true;
}
inline bool operator > (Bigint a, Bigint b){
    if(a==b || a<b)
        return false;
    return true;
}

std::string n, m;

inline bool check(Bigint x, Bigint y){
    if(x>y)
        return true;
    return false;
}
int main(){
    std::cin >> n >> m;
    Bigint a(n), b(m), c("0");
    long long l = 1, r = (1<<40), mid;
    while(l<=r){
        mid = l+((r-l)>>1);
        c = m*mid;
        if(check(c, n))
            r = mid-1;
        else
            l = mid+1;
    }
    mid = l+((r-l)>>1);
    std::cout << mid;
    return 0;
}

咋回事啊? 看谷群里的回答没看懂。

2023/7/20 10:42
加载中...