下雪了,KK学长站在三教门口,看学弟学妹们堆雪人。突然KK学长发现一个神奇的规律:春秋大道上能被k整除的位置都会有一个雪人。现在KK学长想知道春秋大道的[x, y]区间里面有多少个雪人。
下雪了,KK学长站在三教门口,看学弟学妹们堆雪人。突然KK学长发现一个神奇的规律:春秋大道上能被k整除的位置都会有一个雪人。现在KK学长想知道春秋大道的[x, y]区间里面有多少个雪人。
给定一个整数t,表示有t(t<=6000)组测试数据。每组测试数据有三个整数k(k非0且|k|<=2^30),x,y(x<=y且|x|,|y|<=2^30)。
每行输出一个整数,表示雪人的个数。
#include<stdio.h> #include<string.h> int check(int n1,int m1,int n2,int m2){ if(m1==0&&m2==0)return n2-n1+1; else if(m1!=0&&m2==0)return n2-n1; else if(m1==0&&m2!=0)return n2-n1+1; else if(m1!=0&&m2!=0)return n2-n1; } int main(){ int t,k,x,y,te,ty; int n1,m1,n2,m2; scanf("%d",&t); while(t--){ ty=0; scanf("%d%d%d",&k,&x,&y); if(k<0)k=-k; if(x<=0&&y<=0){ te=-1*x; x=-1*y; y=te; } else if(x<0&&y>0){ ty=1; te=-1*x; x=1; } n1=x/k; m1=x%k; n2=y/k; m2=y%k; int sum; sum=check(n1,m1,n2,m2); if(ty){ sum+=check(0,0,te/k,te%k); } printf("%d\n",sum); } return 0; }