第一题AC
#include<bits/stdc++.h>
using namespace std;
string Date;
bool isPrime(int n) {
int sq = sqrt(n);
if(n <= 1) return false;
for(int i = 2;i <= sq;++i)
if(n % i == 0)
return false;
return true;
}
int main() {
cin >> Date;
int flag = 1;
for(int i = 0;i < Date.size();++i) {
string subDate = Date.substr(i);
cout << subDate << " ";
if(isPrime(stoi(subDate))) {
cout << "Yes\n";
} else {
cout << "No\n";
flag = 0;
}
}
if(flag) cout << "All Prime!\n";
return 0;
}
第二题 (测试点6错误)
#include<bits/stdc++.h>
using namespace std;
int low, high, N, M;
vector<int> Number[11];
unordered_map<int, bool> visited;
bool isDifference[100010];
bool isOut[100010];
int main() {
cin >> low >> high;
if(low > high) swap(low, high);
cin >> N >> M;
for(int i = 1;i <= N;++i) {
for(int j = 0;j < M;++j){
int num;
cin >> num;
if(j == 0) Number[i].push_back(0);
Number[i].push_back(num);
}
}
isDifference[high - low] = true;
visited[high] = visited[low] = true;
for(int round = 1;round <= M;++round) {
for(int player = 1;player <= N;++player){
int nowNum = Number[player][round];
if(isOut[player]) continue;
for(auto p: visited) {
int a = nowNum, b = p.first;
int differ = abs(b - a);
isDifference[differ] = true;
}
if(visited[nowNum] || !isDifference[nowNum]){
printf("Round #%d: %d is out.\n", round, player);
isOut[player] = true;
} else {
visited[nowNum] = true;
}
}
}
vector<int> win;
for(int i = 1;i <= N;++i)
if(!isOut[i])
win.push_back(i);
if(win.size() == 0)
cout << "No winner.\n";
else {
cout << "Winner(s):";
for(int i = 0;i < win.size();++i)
cout << " " <<win[i];
}
return 0;
}
第三题AC
#include<bits/stdc++.h>
using namespace std;
int N, R, K, M;
vector<int> G[501];
int regionAnimal[501] = {
0};
map<int, bool> Cnt;
int main() {
cin >> N >> R >> K;
for(int i = 0;i < R;++i) {
int u, v;
cin >> u >> v;
G[u].push_back(v);
G[v].push_back(u);
}
cin >> M;
for(int i = 0;i < M;++i) {
fill(regionAnimal+1, regionAnimal+N, -1);
Cnt.clear();
int flag = 1;
for(int regionID = 1;regionID <= N;++regionID) {
int animal;
cin >> animal;
Cnt[animal]++;
regionAnimal[regionID] = animal;
}
for(int regionID = 1;regionID <= N;++regionID) {
for(int v: G[regionID]){
if(regionAnimal[v] > 0){
if(regionAnimal[v] == regionAnimal[regionID]){
if(i == 2) cout << regionID << "-" << v;
flag = 0;
break;
}
}
}
}
if(Cnt.size() != K) flag = 2;
if(Cnt.size() < K) cout << "Error: Too few species.\n";
else
if(Cnt.size() > K) cout << "Error: Too many species.\n";
if(flag == 1) cout << "Yes\n";
else
if(flag == 0) cout << "No\n";
}
return 0;
}
第四题,不会,没时间写