#2131: 啥鬼阿= =


andy3466 (阿尼亞要我下次記得開讀檔)

學校 : 臺北市立成功高級中學
編號 : 4702
來源 : [118.168.221.144]
最後登入時間 :
2015-07-06 10:49:34
d256. 11388 - GCD LCM -- UVa11388 | From: [61.229.108.79] | 發表日期 : 2009-07-03 19:48

#include<iostream>  
using namespace std;  
int main()  
{  
int a,b;  
int n;  
scanf("%d",&n);  
while(n--){  
scanf("%d%d",&a,&b);  
if(b%a!=0)cout<<"-1"<<endl;      
else cout<<a<<' '<<b<<endl;  
    }} 

我只是把cin改成scanf就acㄌ

難道zerojudge不接受cin?

 
#2239: Re:啥鬼阿= =


alex780312 (綿羊大神)

學校 : 國立臺灣師範大學
編號 : 7247
來源 : [140.122.208.1]
最後登入時間 :
2011-11-26 19:54:52
d256. 11388 - GCD LCM -- UVa11388 | From: [114.47.107.139] | 發表日期 : 2009-08-07 12:19

#include  
using namespace std;  
int main()  
{  
int a,b;  
int n;  
scanf("%d",&n);  
while(n--){  
scanf("%d%d",&a,&b);  
if(b%a!=0)cout<<"-1"<
else cout<<<' '<<
    }} 

我只是把cin改成scanf就acㄌ

難道zerojudge不接受cin?


試試看long long
 
#2668: Re:啥鬼阿= =


pcsh710742 (ms0472904)

學校 :
編號 : 2494
來源 : [1.34.10.217]
最後登入時間 :
2015-08-22 19:29:41
d256. 11388 - GCD LCM -- UVa11388 | From: [115.43.146.65] | 發表日期 : 2009-11-12 22:41

#include  
using namespace std;  
int main()  
{  
int a,b;  
int n;  
scanf("%d",&n);  
while(n--){  
scanf("%d%d",&a,&b);  
if(b%a!=0)cout<<"-1"<
else cout<<<' '<<
    }} 

我只是把cin改成scanf就acㄌ

難道zerojudge不接受cin?


試試看long long

經過一番研究之後,發現第五筆的測試資料的確超出了 int 的範圍(抱歉我的疏忽),因此程式改用 long long 就會過了。而這筆的答案是 -1,使用 scanf 讀取時,程式雖然讀到了一個爆掉的數字,但是無法偵測出這個狀況,仍傻傻地用錯誤的數字來計算,只是算出來的結果仍然是 -1,所以程式反而會 AC。但是 cin 是一個比較「高檔」的輸入指令,當它讀到一個太大的數字時,會設定 cin 的 failbit,表示讀取失敗,在還沒有用 cin.clear() 清除 failbit 之前,接下來所有的 cin 讀取動作都會跳過,導致程式一直延用第五筆所讀入的測試資料,也會一直輸出 -1。而第五筆及第六筆的正確的案都是 -1,所以都通過了測試,但是第七筆的答案不是 -1,所以就在那筆 WA 了。cin 提供了一個 fail() 成員函數讓程式可以偵測這種情況並加以解決,你可以在 cin 指令之後加上「     if (cin.fail()) cin.clear();」以發現錯誤並清除 failbit。Pascal 則是發現輸入數字太大時,直接產生執行時期錯誤並跳出程式。現在測資已經更正,並為所有的 WA (line:7)RE (code:106) 重測。非常感謝各位先進所提供的資訊,也讓我在此學到了不同語言在處理輸入錯誤時的不同方式。 

 
ZeroJudge Forum