丙組T1:https://www.iai.sh.cn/problem/24
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
int cnt = 0;
if(a >= 90) cnt++;
if(b >= 90) cnt++;
if(c >= 90) cnt++;
if(cnt >= 2 && d >= 85) cout << "Qualified";
else cout << "Not qualified";
return 0;
}
丙組T2:https://www.iai.sh.cn/problem/42
#include <bits/stdc++.h>
using namespace std;
int n, m;
char c[105][105];
int dx[8] = {-1, 0, 1, 1, 1, 0, -1, -1};
int dy[8] = {-1, -1, -1, 0, 1, 1, 1, 0};
//判斷每一個格子,是否改變狀態,如果改變狀態則不穩定
int main()
{
bool yes = true;
cin >> n >> m;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
cin >> c[i][j];
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
int live = 0; //周圍8個存活的個數
int die = 0; //周圍8個死亡的個數
for(int k = 0; k < 8; k++)
{
int nx = i + dx[k];
int ny = j + dy[k];
if(nx < 1 || nx > n || ny < 1 || ny > m) continue;
if(c[nx][ny] == '*') live++;
if(c[nx][ny] == '.') die++;
}
//下面兩種情況會導致不穩定情況
if(c[i][j] == '*' && (live < 2 || live > 3)) yes = false;
if(c[i][j] == '.' && live == 3) yes = false;
}
}
if(yes) cout << "Still life";
else cout << "Other";
return 0;
}
丙組T3:https://www.iai.sh.cn/problem/33
#include <bits/stdc++.h>
using namespace std;
int n;
int a[100005];
long long ans;
//本題是要把每個城市的數字變成0
//所有無論是正數,還是負數,都需要變成0
//從頭開始,對每一個城市的數字,將其變成0(工作量是當前數字的絕對值),只從後面一個城市的數字搬,
//後面一個城市的數字變成加上前一個城市的數字,直到最後
int main()
{
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i < n; i++)
{
ans += abs(a[i]);
a[i + 1] += a[i];
}
cout << ans;
return 0;
}
丙組T4:https://www.iai.sh.cn/problem/26
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
int p = -1; //符號的位置
int n = 0; //數字的個數
int dn = 0; //小數點的個數
int xn = 0; //非法字元的個數
for(int i = 0; i < s.size(); i++)
{
if(s[i] == '+' || s[i] == '-')
{
p = i;
}
else if(s[i] == '.')
{
dn++;
}
else if(s[i] >= '0' && s[i] <= '9')
{
n++;
}
else xn++;
}
bool yes = true;
//必須有數字,整數和小數部分不能都省略
if(n == 0) yes = false;
//正負號必須在第一個
if(p > 0) yes = false;
//小數點只能有一個
if(dn > 1) yes = false;
//不能有非法字元
if(xn > 0) yes = false;
if(yes) cout << "Valid";
else cout << "Invalid";
return 0;
}
丙組T5:https://www.iai.sh.cn/problem/30
#include <bits/stdc++.h>
using namespace std;
int n, ans;
int a[1000005];
int main()
{
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
sort(a + 1, a + n + 1);
//雙指標演算法
//i列舉天,j列舉蘋果
//先跳過過期的蘋果,再吃一個蘋果
for(int i = 1, j = 1; j <= n;i++) //i列舉天,j表示第幾個蘋果
{
while(j <= n && a[j] + 1 < i) j++; //跳過過期的
if(j <= n) ans++, j++; //吃一個
}
cout << ans;
return 0;
}