2 条题解

  • 0
    @ 2026-2-2 10:49:02

    易懂,但长

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    ll a,m,l,r,ans=1ll;
    int main()
    {
    	scanf("%lld%lld%lld%lld",&a,&m,&l,&r);
    	if(a>r)//在最右边就减回来再算区间内个数 
    	{
    		a-=(a-r)/m*m;
    		while(a>r)a-=m;
    		if(a<l)ans=0ll;//注意可能无法种植即可 
    		ans+=(a-l)/m;
    	}
    	else if(a<l)//在最左边就加回来
    	{
    		a+=(l-a)/m*m;
    		while(a<l)a+=m;
    		if(a>r)ans=0ll;//同上 
    		ans+=(r-a)/m;
    	}
    	else if(l<=a&&a<=r)//直接就在区间内 
    	{
    		ans+=(a-l)/m;//左边能种多少 
    		ans+=(r-a)/m;//右边能种多少 
    	}
    	printf("%lld\n",ans);
    	return 0;
    }
    
    
    • 0
      @ 2026-2-2 9:31:03
      #include<bits/stdc++.h>
      using namespace std;
      #define int long long
      signed main()
      {
      	int a,m,l,r;scanf("%lld%lld%lld%lld",&a,&m,&l,&r);
      	int k1=(l-a)/m;
      	if(a+k1*m<l)k1++;
      	int k2=(r-a)/m;
      	if(a+k2*m>r)k2--;
      	printf("%lld\n",k2-k1+1);
      	return 0;
      }
      
      • 1

      信息

      ID
      8270
      时间
      2000ms
      内存
      1024MiB
      难度
      7
      标签
      递交数
      66
      已通过
      13
      上传者