或者同一化为正数
/*
1.模运算的问题:a%b=|a|%|b|,余数的符号随a
2.按数论的规定:余数不能为负,故结果可能加b变为正,如果余数是0,则结果变成了b,需要%b修正
a%b=(a%b+b)%b (除的结果可正课负,余数一定非负)
3.模运算的规律:可以放进括号中
(a*b)%c=(a%c*b%c)%c
(a+b)%c=(a%c+b%c)%c
*/
#include<stdio.h>
int mod(int a,int b){
return (a%b+b)%b;
}
int main(){
printf("-5%%4=%d\n",-5%4);
printf("5%%(-4)=%d\n",5%(-4));
printf("-5%%4=%d\n",mod(-5,4));
return 0;
}