#include <iostream>
using namespace std;
int see (long ,long ,long,long); //判断看见灯笼的次数
int main(){
long T ,L,v,l,r; //T为输入数据组数 L为路程 l r 为停车的起终点
cin>>T;
long store [T]; //用来存储看的次数,便于输出
for(int i =0;i<T;i++){
cin>>L>>v>>l>>r;
store [i]=see(L,v,l,r);
}
for(int j = 0;j<T;j++){
cout<<store[j]<<endl;
}
return 0;
}
int see (long L,long v,long l,long r){
int look = 0; //哨兵变量 用来记录看灯笼的次数
int x= L/v; //计算路上挂了多少个灯笼
int m =v; //把v存储起来,便于后续叠加灯笼位置
for(int i = 0;i<x;i++){
if(v<l||v>r){ //判断是否看的见灯笼
look++;
}
v+=m; //用于叠加
}
return look;
}
本题关键在于考数据的处理和简单的逻辑