#include <bits/stdc++.h>
using namespace std;
int main() {
int N,M,i,x,cnt=0;
int a[10000+5]={};
while(cin>>N>>M){
for(i=1;i<=M;i++){
cin>>x;
a[x]=1;
}
for(i=1;i<=N;i++){
if(a[i]==0){
cout<<i<<" ";
cnt++;
}
}
if(cnt==0) cout<<"@";
cout<<endl;
}
}
輸入說明
多筆測資,每筆測資兩行,
第一行兩個整數 N、M,N 為參戰的士兵人數,M 為登記號碼數,
第二行有 M 個整數,代表回歸士兵的登記的兵籍號碼。
(1 < N、M <10000)
輸出說明
每筆測資輸出一行,
輸出所有不幸喪生的士兵兵籍號碼 (由小到大)。
如果全部士兵都生還,則輸出 '@'
格式如範例
範例輸入
7 4
3 1 5 7
6 6
6 1 3 2 5 4
6 8
6 1 1 1 2 5 2 5
範例輸出
2 4 6
@
3 4
目前分開執行是正確的,但一起執行時只有2 4 6
你每次結束後,有些變數應該要重製
int main()
{
int N, M, i, x;
while (cin >> N >> M)
{
int cnt = 0;
int a[10000 + 5] = {};
for (i = 1; i <= M; i++)
{
cin >> x;
a[x] = 1;
}
for (i = 1; i <= N; i++)
{
if (a[i] == 0)
{
cout << i << " ";
cnt++;
}
}
if (cnt == 0)
cout << "@";
cout << endl;
}
}