ABC315G 81AC 20WA 悬关求调 急急急!!!
  • 板块题目总版
  • 楼主hzlqwq
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/8/20 22:02
  • 上次更新2023/11/3 02:21:38
查看原帖
ABC315G 81AC 20WA 悬关求调 急急急!!!
598026
hzlqwq楼主2023/8/20 22:02

rt,调了一个多小时一直是 8080 AC 2020 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;
}
2023/8/20 22:02
加载中...