上个月的蓝桥双周赛部分题解
赛题1
题1解:
#include <iostream>
using namespace std;
/*long long jdz(long long a){
if(a<0)return -a;
else return a;
}*/
int main()
{
//cout<<(-8)%(3)<<endl;
int n;
long long a,b;
cin>>n;
while(n--){
cin>>a>>b;
long long t=a%b;
if(t>=0)cout<<t<<endl;
else cout<<t+abs(b)<<endl;
}
return 0;
}
注意该题不能直接计算a%b(那当然,一般都有坑o(´^`)o),需要考虑A,B取值的四种情况,下面是推理过程
a%b特解t+|b|推理过程:
因为直接-8%3会得-2,但题中的取余是要Bq+r=A,即Bq≤A
直接取余是,其中r不满足条件