心得:
学到了基本知识:取模和取余是不一样的,取模与取余的定义分别为:
取余:rem(x,y)=x-y.*fix(x/y)
取模:mod(x,y)=x-y.*floor(x/y)
其中,fix()向0取整,floor向负无穷取整,当商为正数时,二者方向一致,所以结果一致,当商为负数时,方向相反,所以结果不一致。
下面是代码:
1 /*{ 2 PROG:combo 3 LANG:C++ 4 ID:jzyjzy2 5 }*/ 6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <iostream> 10 int main() 11 { 12 13 freopen ("combo.in","r",stdin); 14 freopen ("combo.out","w",stdout); 15 int N; 16 int Jonh[3]={0}; 17 int Master[3]={0}; 18 scanf("%d%d%d%d%d%d%d",&N,&Jonh[0],&Jonh[1],&Jonh[2],&Master[0],&Master[1],&Master[2]); 19 20 int result=N<5?N*N*N*2:250; 21 int repeated=1; 22 int i=0; 23 for(i=0;i<3;i++) 24 { 25 int temp=(Jonh[i]-Master[i])%N>0?(Jonh[i]-Master[i])%N:(Master[i]-Jonh[i])%N; 26 temp=N-temp>temp?temp:N-temp; 27 temp=N>5?5-temp:N; 28 if(temp<0) 29 temp=0; 30 repeated*=temp; 31 } 32 result-=repeated; 33 printf("%d\n",result); 34 return 0; 35 }
浙公网安备 33010602011771号