2987: Earthquake

来源:互联网 发布:淘宝确认订单 编辑:程序博客网 时间:2024/06/05 03:12

题目链接

题目大意:给定A,B,C,求满足方程Ax+By<=C的非负整数解个数

题解:枚举x,易知

ycaxbx[0,c/a]

(cax)(c%a+ax)

整理一下,就是求

x=0c/aax+c mod ab

就变成类欧模板了

最后加上ca+1,因为在yw时,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; }
原创粉丝点击