第一题
笔记:
1.这道题比较简单,但是有一个地方要注意,就是题目给出的整数范围是-231 ~231 ,因此int类型并不适用,所以要将arr数组定义为长整形long或long long。
我的代码:
#include <iostream>
using namespace std;
int main()
{
int n;
long long arr[100];
int res[100];
cin>>n;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < 3; ++j) {
cin>>arr[j];
}
if (arr[0] + arr[1] > arr[2]){
res[i] = 1;
}
else res[i] = 0;
}
for (int i = 0; i < n; ++i) {
if (res[i] == 1){
printf("Case #%d: true",i+1);
cout<<endl;
}
else{
printf("Case #%d: false",i+1);
cout<<endl;
}
}
}
第二题
笔记📒:
- 这道题思路比较清晰,现将所有数字输入,然后根据不同的情况将每个数字分配到不同的数组,总共有五个数组,然后再分别按照不同数组的要求求出每个数组的结果,最后输出即可(还要注意数组为空的情况)。
- 我一开始本来想用c++写的,但是写到将数字分配到数组的时候就想转到python写了,因为c++好像不能像python那样将数组直接append到数组的末尾,一般我会再额外定义一个整形来表示数组的长度,但是这里有五个数组,比较麻烦,所以还是决定用python。
- 用python写的话有一个地方需要注意,就是输入的时候会把第一个表示数量的数也输入进去,适用pop(0)即可将其删去。
- 题目有要求输出保留一位小数,适用
print("{:.1f} ".format(res[i]), end='')
可以实现,其中: {.1f} 表示保留一位小数。
第三题:
笔记📒:
- 一开始没有看清楚题目,原来M和N指的是第N个素数。
- 首先写一个从2开始的循环判断是否是素数,如果是素数则计数器加一,直到计数器的值等于N。
- 看了别人的代码之后我发现vector是一个好东西,可以用来代替数组,并且有很多便捷的操作。
- vetor的具体知识和操作
代码:
#include <iostream>
#include <vector>
using namespace std;
bool prime(int a) {
if(a<2) return false;
for (int i = 2; i * i <= a; i++){
if(a % i == 0) return false;
}
return true;
}
int main(){
int M, N;
vector<int> arr;
int num = 2, k = 0;
int flag = 0, a = 0;
cin >> N >> M;
while(k < M){
if(prime(num)){
k++;
if(k >= N) arr.push_back(num);
}
num++;
}
for(int j = 0; j < arr.size(); j++){
if(flag == 1) cout << " ";
cout << arr[j];
a++;
flag = 1;
if(a == 10){
cout << '\n';
a = 0;
flag = 0;
}
}
return 0;
}