#7120:


cute30134 (無意義)

學校 : 臺北市立第一女子高級中學
編號 : 27961
來源 : [203.64.52.210]
最後登入時間 :
2013-05-23 16:19:27
d485. 我愛偶數 -- 板橋高中教學題 | From: [220.136.185.132] | 發表日期 : 2012-10-26 20:52

#include<iostream>
using namespace std;

int a;
int b;

int main()
{
    cin >> a >> b;
    
    if(a >= b)
    {
         if((a - b) % 2 == 1)     cout << (a - b + 1) / 2  << endl;
         else if(a % 2 == 0 && b % 2 == 0)     cout << (a - b) / 2 + 1 << endl;
         else      cout << (a - b) / 2 << endl;
    }
     if(b > a)
    {
         if((b - a) % 2 == 1)     cout << (b - a + 1) / 2  << endl;
         else if(a % 2 == 0 && b % 2 == 0)     cout << (b - a) / 2 + 1 << endl;
         else      cout << (b - a) / 2 << endl;
    }


    return 0;   
    
}

 

為什麼打0和2147483647時會出現 -1073741824???

 

 
#7504: Re:怪怪的


davistonyhsu (曉石之音)

學校 : 國立臺灣科技大學
編號 : 30915
來源 : [123.193.103.104]
最後登入時間 :
2024-02-17 09:31:18
d485. 我愛偶數 -- 板橋高中教學題 | From: [140.120.229.79] | 發表日期 : 2013-02-20 23:45

#include
using namespace std;

int a;
int b;

int main()
{
    cin >> a >> b;
    
    if(a >= b)
    {
         if((a - b) % 2 == 1)     cout << (a - b + 1) / 2  << endl;
         else if(a % 2 == 0 && b % 2 == 0)     cout << (a - b) / 2 + 1 << endl;
         else      cout << (a - b) / 2 << endl;
    }
     if(b > a)
    {
         if((b - a) % 2 == 1)     cout << (b - a + 1) / 2  << endl;
         else if(a % 2 == 0 && b % 2 == 0)     cout << (b - a) / 2 + 1 << endl;
         else      cout << (b - a) / 2 << endl;
    }


    return 0;   
    
}

 

為什麼打0和2147483647時會出現 -1073741824???

 


其實你應該有發現測資全是正數(而且a必小於b)

所以判斷a,b大小的條件式可以省去

 其實2147483647這數字相當危險(踩在int的邊界)

建議你可以用unsigned int 宣告你的變數 

 
ZeroJudge Forum