luogu P5171 Earthquake

题目描述

给定 a,b,c ,求满足方程 ax+by⩽c 的非负整数解个数。

输入格式

输入三个整数 a,,b,,c 。

输出格式

输出一个整数表示答案。


类欧几里得算法

#include<cstdio>
#define int long long
inline int f(int a,int b,int c,int n){
    if(!a)return b/c*(n+1);
    if(a>=c||b>=c) return n*(n+1)/2*(a/c)+(n+1)*(b/c)+f(a%c,b%c,c,n);
    else {int m=(a*n+b)/c; return m*n-f(c,c-b-1,a,m-1);}
}
signed main(){ 
    int a,b,c;
    scanf("%lld%lld%lld",&a,&b,&c); 
    printf("%lld\n",f(a,c%a,b,c/a)+c/a+1);	 
}
posted @ 2019-11-08 17:15  白木偶君  阅读(76)  评论(0编辑  收藏  举报