rt,调了一个多小时一直是 80 AC 20 WA 左右,人要麻了,已经找不到问题了,求大佬帮忙看看,非常感谢 orz
#include <iostream>
using namespace std;
#define int __int128
int n,a,b,c,target,ans;
inline void read(int &x){
x=0;
char ch=getchar();
while (!isdigit(ch)) ch=getchar();
while (isdigit(ch)) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
}
inline void write(int x){
if (x>=10) write(x/10);
putchar(x%10^48);
}
inline int exgcd(int a,int b,int &x,int &y){
if (!b) return x=1,y=0,a;
int gcd=exgcd(b,a%b,y,x);
return y-=a/b*x,gcd;
}
inline int floor(int x,int div){
if (x>0) return x/div;
return (x-div+1)/div;
}
inline int ceil(int x,int div){
if (x>0) return (x+div-1)/div;
return x/div;
}
signed main(){
read(n),read(a),read(b),read(c),read(target);
int x0,y0,gcd=exgcd(b,c,x0,y0);
for (int i=1;i<=n&&a*i<target;i++){
int tar=target-a*i;
if (tar%gcd) continue;
int x=tar/gcd*x0,y=tar/gcd*y0;
int lx=ceil(1-x,c),rx=floor(n-x,c);
int ly=ceil(y-n,b),ry=floor(y-1,b);
ans+=max(min(rx,ry)-max(lx,ly)+1,int());
}
write(ans);
return 0;
}