题目链接

题意

求满足如下不等式的非负整数 \(x,y\) 的对数

\[ax+by\leq c
\]

Sol

a,b,c 都是非负的,那么先随便变个形:

\[y\leq\frac{c-ax}{b}
\]

显然答案就是:

\[\sum_{x=0}^{\lfloor\frac{c}{a} \rfloor}\bigg(\lfloor \frac{c-ax}{b}\rfloor+1\bigg)
\]

类欧板子题了,但是这个斜率居然是一个负数 ,不能直接套用以前的做法。

一开始想着先把这条直线往 \(x\) 轴对称然后向上平移,但是这样太麻烦了。

令 \(n=\lfloor \frac{c}{a}\rfloor\) ,直接把直线沿着 \(n/2\) 对称就好了,这样在下方的点不受影响,左上方的点也被对应到了右上方,并且整点依然是整点。

code:

#include<bits/stdc++.h>
using namespace std;
template<class T>inline void init(T&x){
x=0;char ch=getchar();bool t=0;
for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') t=1;
for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+(ch-48);
if(t) x=-x;return;
}typedef long long ll;
ll a,b,c;
inline ll gcd(ll a,ll b){return b? gcd(b,a%b):a;}
inline ll likegcd(ll n,ll a,ll b,ll c){
if(!n) return b/c;if(!a) return b/c*(n+1);
ll d=abs(gcd(gcd(a,b),c));
if(d>1) a/=d,b/=d,c/=d;
if(a>=c||b>=c) return b/c*(n+1)+a/c*(n+1)*n/2+likegcd(n,a%c,b%c,c);
ll m=(a*n+b)/c;
return n*m-likegcd(m-1,c,c-b-1,a);
}
int main()
{
init(a),init(b),init(c);
ll n=c/a;ll ans=n+1+likegcd(n,a,c-a*n,b);
cout<<ans<<endl;
return 0;
}

最新文章

  1. solrCloud的两种部署方式
  2. AS下NDK开发(一)
  3. Linux 命令 ls -l
  4. Notification与多线程
  5. iOS 使用xmpp做聊天客户端
  6. javascript笔记5之流程控制语句
  7. 转载Eclipse中Maven WEB工程tomcat项目添加调试
  8. 关于set和map的用法
  9. 快速学习使用 Windows Azure 上的 SharePoint Server 2013
  10. php ajax提交数据 在本地可以执行,而在服务器不能执行
  11. java中File类应用:遍历文件夹下所有文件
  12. [js]d3.js绘制拓扑树
  13. Python数据类型的内置函数之tuple(元组),dict(字典),set(集合)
  14. js 浮点数相加 变成字符串 解决方案
  15. 减少apk包大小的一种思路
  16. CentOS 7使用yum安装MYSQL
  17. 执行update语句mysql5.6报错ERROR 1292 (22007): Truncated incorrect DOUBLE value: &#39;糖糖的坤大叔&#39;
  18. 神经网络 之 DNN(深度神经网络) 介绍
  19. Android 搭建ssh服务
  20. CodeForces - 1073E :Segment Sum (数位DP)

热门文章

  1. ping: sendto: No route to host
  2. C#爬虫之Senlium
  3. 【C语言工具】AddressSanitizer - 内存检测工具
  4. 6.824 Lab 2: Raft 2A
  5. SpringBoot、ActiveMQ整合阿里大鱼-----短信服务
  6. linux 隐藏显示终端光标
  7. Ubantu上安装Redis
  8. 小白学Python——Matplotlib 学习(1)
  9. HNUSTOJ-1258 Time
  10. go &amp; AI核心代码