题意
给定a,b,c,求满足方程Ax+By<=C的非负整数解
A,B<=10^9.C<=Min(A,B)*10^9
分析
如果枚举x,不难得到y<=(C-Ax)/B
那么这就是一个经典的类欧问题了。
代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
LL solve(LL a,LL b,LL c,LL n)
{
if (!c) return 0;
if (a>=c||b>=c) return a/c*n*(n+1)/2+b/c*(n+1)+solve(a%c,b%c,c,n);
else return (a*n+b)/c*n-solve(c,c-b-1,a,(a*n+b)/c-1);
}
int main()
{
LL a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
printf("%lld",solve(a,c%a,b,c/a)+c/a+1);
return 0;
}