https://vjudge.net/problem/UVA-1648
设上升x层,列个方程解出来,再把x带回去
#include<cmath> #include<cstdio> #include<iostream> #include<algorithm> using namespace std; int u[2001],d[2001]; int main() { int n,m,ans,x; while(scanf("%d%d",&n,&m)!=EOF) { ans=2e9; for(int i=1;i<=m;i++) scanf("%d%d",&u[i],&d[i]); for(int i=1;i<=m;i++) { x=d[i]*n/(u[i]+d[i])+1; ans=min(ans,u[i]*x-d[i]*(n-x)); } printf("%d ",ans); } }