小菜鸡一枚,大佬们全部加起来的时间一分多种,我的加上罚时有十分钟了,纯暴力,发出来仅供参考
T211364 [#4练习赛]符合条件的数
这一题本来想”造数“的,写着写着自己给想乱了,然后就改写了暴力【用时:00:26】
#include <iostream>
using namespace std;
int num(int temp){
int num = 0;
while(temp > 0){
num = (temp % 10 == 3) ? (++num) : num;
temp /= 10;
}
return num;
}
int main(){
int n, k, i = 0, temp = 0, difference = 0, result = 0;
cin >> n >> k;
difference = k - num(n); //判断初始有几个3
if(difference){
for(int i = n; ; i++){
result = num(i);
if(result == k){
cout << i << endl;
break;
}
}
} else {
cout << n << endl;
}
return 0;
}
T211368 [#4练习赛]选代表
这里C++用vector之类的做会更简单,不过相对的空间浪费也会大一点【用时00:35】
#include <iostream>
using namespace std;
int num[20005] = {0};
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++){
cin >> num[i];
}
for(int i = 0; i < n; i++){
for(int j = i + 1; j < n; j++){
if(num[i] == num[j]){
num[j] = -1;
}
}
}
for(int i = 0; i < n; i++){
if(num[i] == -1){
continue;
}
cout << num[i] << " ";
}
return 0;
}
T211372[#4练习赛]成绩统计
这一题是纯纯的暴力,直接用数组做的,因为结构体好久不用了,写起来没有数组顺手,当然了结构体会快很多,一定要注意看题目!!!我就因为没看清题目多了三遍罚时(麻了)【用时:02:06】
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
string student[105];
int dailyGrade[105] ={0};
int finalGrade[105] = {0};
int totalGrade[105] = {0};
void sortNum(int n){
for(int i = 1; i <= n - 1; i++){
for(int j = 1; j <= n - i; j++){
if(totalGrade[j - 1] < totalGrade[j]){
int temp = totalGrade[j - 1];
string box = student[j - 1];
totalGrade[j - 1] = totalGrade[j], student[j - 1] = student[j];
totalGrade[j] = temp, student[j] = box;
}
}
}
}
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++){
cin >> student[i] >> dailyGrade[i] >> finalGrade[i];
double result = ceil(sqrt(finalGrade[i]) * 10) * 0.6 + dailyGrade[i] * 0.4;
totalGrade[i] = int(result + 0.5);
}
sortNum(n);
for(int i = 0; i < n; i++){
cout << student[i] << " " << totalGrade[i] << endl;
}
return 0;
}
T211939 [#4练习赛]背答案
直接判断输入的字符串吧,我一开始想的用字符数组做输入,然后再像Java一样整个分隔啥的,然后写着写着给自己写迷茫了【用时:02:54】
#include <iostream>
#include <cstdio>
using namespace std;
string num[105], qes[105];
char ch[105];
string title, ans1, ans2, ans3, ans4;
int main(){
int n, p;
cin >> n >> p;
for(int i = 0; i < n; i++){
cin >> num[i] >> qes[i];
}
for(int i = 0; i < p; i++){
cin >> title >> ans1 >> ans2 >> ans3 >> ans4;
for(int j = 0; j < n; j++){
if(title == num[j]){
if(ans1 == qes[j]){
ch[i] = 'A';
}
if(ans2 == qes[j]){
ch[i] = 'B';
}
if(ans3 == qes[j]){
ch[i] = 'C';
}
if(ans4 == qes[j]){
ch[i] = 'D';
}
}
}
}
for(int i = 0; i < p; i++){
cout << ch[i] << endl;
}
return 0;
}
T211943 [#4练习赛]击鼓传花
这一题的数据范围也很麻,我只想到用标记的方法去做,暂时没想到别的好方法,官方题解也还没去看,输入一个查一个,还是极其暴力的【用时:02:33】
#include <iostream>
using namespace std;
int isFlag[1000005];
int pm[1000005];
int main(){
int n, m, k, result = 0;
cin >> n >> m >> k;
for(int i = 0; i < m; i++){
cin >> pm[i];
int flower = pm[i];
isFlag[flower] = 1;
flower = (flower + k) % n;
while(!isFlag[flower]){
isFlag[flower] = 1;
flower = (flower + k) % n;
}
}
for(int i = 0; i < n; i++){
if(!isFlag[i]){
++result;
}
}
cout << result << endl;
return 0;
}
题目不难暴力都能写就是看着和大佬们的差距有点挫折,第一名的大佬总用时01:27,哭了/(ㄒoㄒ)/~~