C数组中可能有重复的数。
大家要勇敢的暴力。不要想太多。
#include<iostream> #include<algorithm> #include<string> #include<cstring> #include<vector> #include<queue> using namespace std; typedef long long ll; ll c[100005]; int main(){ ll n; scanf("%lld",&n); for(ll i=0;i<n;i++){ scanf("%lld",c+i); } sort(c,c+n); ll k=unique(c,c+n)-c; ll a,b; scanf("%lld %lld",&a,&b); ll cnt=0; ll max_s; while(a>b){ max_s=1; for(ll i=0;i<k;i++){ if(a%c[i]>a-b)continue;//保证正好减少到b max_s=max(max_s,a%c[i]); } a-=max_s; cnt++; } printf("%lld\n",cnt); return 0; }