题目详情::
1060 爱丁顿数 (25 分)
描述:
思路:
将输入的数存储到数组中,将数组翻转,遍历数组,判断是否满足有 E 天骑车超过 E 英里。
代码:
#include <iostream>
#include <algorithm>
using namespace std;
int a[100010];
bool cmp(int a, int b) {
return a > b;
}
int main() {
int n;
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
sort(a+1, a+n+1, cmp);
int E = 0, p = 1;
while(E <= n && a[p] > p) {
E++;
p++;
}
cout << E;
system("pause");
return 0;
}
1061 判断题 (15 分)
描述:
思路:
一个数组存储判断题的分数,一个数组存储判断题的正确答案。
代码:
#include<iostream>
#include<cstdio>
using namespace std;
int ans[101], score[101];
int main(){
int n, m, temp;
cin >> n >> m;
for(int i = 0; i < m; i++)
cin >> score[i];
for(int i = 0; i < m; i++)
cin >> ans[i];
for(int i = 0; i < n; i++) {
int total = 0;
for(int j = 0; j < m; j++) {
cin >> temp;
if(temp == ans[j]) total += score[j];
}
cout << total << endl;
}
system("pause");
return 0;
}
1064 朋友数 (20 分)
描述:
思路:
输入的数小于10的4次方,所以最大的朋友数为36,定义一个数组用于判断朋友数是否存在。
将输入数的每一位相加,存储到对应下标的数组中。
代码:
#include <iostream>
#include <cstdio>
using namespace std;
int id[40];
int main(){
int n, count = 0, flag = 0;
cin >> n;
int temp, c;
for(int i = 0; i < n; i++){
cin >> temp;
int sum = 0;
while(temp){
sum += temp % 10;
temp /= 10;
}
id[sum]++;
if(id[sum] == 1) count++;
}
cout << count << endl;
for(int i = 0; i < sizeof(id) / sizeof(id[0]); i++){
if(id[i] != 0 && flag == 0) { cout << i; flag++; }
else if(id[i] != 0 && flag != 0) cout << " " << i;
}
system("pause");
return 0;
}
1065 单身狗 (25 分)
描述:
思路:
定义可变长的couple数组(初值为-1),将给出的夫妻对存储到couple中,例如:输入的为a b,则将couple[a] = b; couple[b] = a;
定义guest数组和isExist数组,对couple[guest]进行判断:是否为 -1,不为则表示guest到了这场派对,最后输出isExist[guest]为0的客人编号。
代码:
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int main() {
int n, a, b, m;
scanf("%d", &n);
vector<int> couple(100000, -1);
for (int i = 0; i < n; i++) {
scanf("%d%d", &a, &b);
couple[a] = b;
couple[b] = a;
}
scanf("%d", &m);
vector<int> guest(m), isExist(100000);
for (int i = 0; i < m; i++) {
scanf("%d", &guest[i]);
if (couple[guest[i]] != -1)
isExist[couple[guest[i]]] = 1;
}
set<int> s;
for (int i = 0; i < m; i++) {
if (!isExist[guest[i]])
s.insert(guest[i]);
}
printf("%d\n", s.size());
for (auto it = s.begin(); it != s.end(); it++) {
if (it != s.begin()) printf(" ");
printf("%05d", *it);
}
return 0;
}
1076 Wifi密码 (15 分)
描述:
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。谢谢合作!!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成 wifi 的密码。这里简单假设每道选择题都有 4 个选项,有且只有 1 个正确答案。
思路:
输出:输入的字符串s的 s[2]是为T的 s[0]
代码:
#include<iostream>
using namespace std;
int main(){
string s;
while(cin>>s){
if(s[2]=='T'){
if(s[0]=='A')cout<<1;
if(s[0]=='B')cout<<2;
if(s[0]=='C')cout<<3;
if(s[0]=='D')cout<<4;
}
}
return 0;
}