给你一个区间a,b让你求在a,b之间能被k整除的数有多少个,然后主要是分成3类,一个是同号,异豪,还有有为0的时候。
注意一开始我用a*b来判断,但是这个吧,爆了longlong,一般还是不要用*,小心爆longlong
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
int main()
{
LL k , a , b;
scanf("%I64d %I64d %I64d",&k , &a , &b);
if(a >0 && b > 0 || a < 0 && b < 0){
int flag = 0;
if(a % k == 0 && a > 0 || b % k == 0 && b < 0) flag = 1;
printf("%I64d\n",abs(b/k - a/k) + flag);
return 0;
}
else if(a < 0 && b > 0 || a > 0 && b < 0){
//int flag = 0;
//if(b % k == 0) flag = 1;
printf("%I64d\n",abs(b/k - a/k) + 1);
return 0;
}
else{
int flag = 1;
// if(a == 0 && b == 0) flag = 0;
printf("%I64d\n",abs(b/k + a/k) + flag);
return 0;
}
}
版切第二题
人一我百,人十我万,穷尽一生,只为最强。