弱弱的問個問題,在寫這題吃了好多RE(記憶體區段錯誤),經不斷作死塞爆ZJ的流量測試出原因出在自寫的compare函式:
bool cmp(int p1,int p2) { if((p1%m)!=(p2%m)) { return p1%m<p2%m; } else if((p1%2==1)&&(p2%2==1))//若此判斷這樣寫RE,改為else if((p1%2)&&(p2%2))則AC { return p1>p2; } else if((p1%2==0)&&(p2%2==0)) { return p1<p2; } else { return p1%2; } }
實在不明白這樣改有甚麼差別導致RE,懇請大神求解~
弱弱的問個問題,在寫這題吃了好多RE(記憶體區段錯誤),經不斷作死塞爆ZJ的流量測試出原因出在自寫的compare函式:
bool cmp(int p1,int p2) { if((p1%m)!=(p2%m)) { return p1%m<p2%m; } else if((p1%2==1)&&(p2%2==1))//若此判斷這樣寫RE,改為else if((p1%2)&&(p2%2))則AC { return p1>p2; } else if((p1%2==0)&&(p2%2==0)) { return p1<p2; } else { return p1%2; } }實在不明白這樣改有甚麼差別導致RE,懇請大神求解~
如果要判斷數字為奇數還是偶數,建議用(n & 1),位元運算比%/運算快非常多
(n & 1)範例:
n = 5 = (101)2,1 = (001)2
讓(101)和(001)去做&運算會得到(001)2
意思是20那項的係數為1,所以n就是奇數。反之,如果20項的係數為0,則n就是偶數