题目大意:给定A,B,C,求满足方程Ax+By<=C的非负整数解个数
题解:枚举x,易知
y≤⌊c−axb⌋,x∈[0,c/a]
由 (c−ax)和(c % a+ax)一一对应
整理一下,就是求
∑x=0c/a⌊ax+c mod ab⌋
就变成类欧模板了
最后加上 ⌊ca⌋+1 ,因为在 y≤w 时,y可以取0~w共计w+1个值
我的收获:大力推~~~
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
typedef long long ll;
inline ll f(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)+f(a%c,b%c,c,n);
return (a*n+b)/c*n-f(c,c-b-1,a,(a*n+b)/c-1);
}
void init()
{
ll a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
printf("%lld\n",f(a,c%a,b,c/a)+c/a+1);
}
int main()
{
init();
return 0;
}