#include <iostream>
#include <sstream>
using namespace std;
int gcd(int a,int b)
{
if (b==0)
return a;
else
return gcd(b,a%b);
}
int main ()
{
int q;
while (cin>>q )
{
for (int i=0;i<q;i++)
{
string s;
getline(cin,s);
stringstream ss(s);
int e,w,k=0,a,f[105]={},num=0,max=0;
while (ss >> a)
{
f[k]=a;
k++;
}
for (e=0;e<k;e++)
{
for (w=0;w<k;w++)
{
if (f[w]!=f[e])
{
num=gcd(f[e],f[w]);
if (max<num)
{
max=num;
}
}
}
}
if (max!=0)
cout << max << endl;
ss.clear();
ss.str("");
}
}
}
為什麼他在讀取測資的時候 會沒讀到 某一個數字
為什麼他在讀取測資的時候 會沒讀到 某一個數字
應該在輸入整數後再多讀入一次string.根據我的經驗...
為什麼他在讀取測資的時候 會沒讀到 某一個數字
應該在輸入整數後再多讀入一次string.根據我的經驗...
...呃... 我回錯帖了 不過我講的有可能是對的,你可以先試試
為什麼他在讀取測資的時候 會沒讀到 某一個數字
應該在輸入整數後再多讀入一次string.根據我的經驗...
...呃... 我回錯帖了 不過我講的有可能是對的,你可以先試試
while (ss >> a)
{
f[k]=a;
k++;
}
他是這邊會沒讀到測資
為什麼他在讀取測資的時候 會沒讀到 某一個數字
應該在輸入整數後再多讀入一次string.根據我的經驗...
...呃... 我回錯帖了 不過我講的有可能是對的,你可以先試試
while (ss >> a)
{
f[k]=a;
k++;
}
他是這邊會沒讀到測資
※
修正 是getline(cin,s) 這裡沒讀到
剛剛的程式碼改編的 他提供的測資可以用 但是 上傳答案有誤 WA line3
cin>>input;
getline(cin,input2);
若要正常執行getline(cin,input2)
要打成這樣
cin>>input;
cin.ignore();
getline(cin,input2);
別問我為什麼
去問其他大大...
因為我不太確定我的解釋是不是正確的
cin>>input;後,input裡面不會存取到你按下的"enter"
所以getline會讀到"enter"才導致你少讀一個