从第6期开始参加CSDN编程竞赛到26期,转眼就参与了20期,第一次进入前十,很开心!
这次的题目比较简单一些,很多满分的,在此分享一下我的解答给大家~~
一个等差数列是一个能表示成a, a+b, a+2b,…, a+nb (n=0,1,2,3,…)的数列。在这个问题中a是一个非负的整数,b是 正整数。 现给出三个整数,分别表示等差数列的第一项a、最后一项、公差b,求该数列的和。
#include
int solution(int m, int n, int p){
int result = 0;
// TODO: 请在此编写代码
if (m < 0 || n <= 0 || p <= 0 || (n - m) % p > 0) {
result = -1;
} else {
int num = (n - m) / p + 1;
result = (m + n) * num / 2;
}
return result;
}
int main() {
int m; int n;
int p;
scanf("%d", &m);
scanf("%d", &n); scanf("%d", &p);
int result = solution(m, n, p);
printf("%d", result);
return 0;
}
在希腊神话中,有一个神祗阿波罗。阿波罗拥有一枚能够使人变得更加聪明的神奇宝石。但是,这枚宝石的魔力被封印在 了一个混乱的顺序中,你需要通过排序的方法才能拥有这枚宝石的魔力。 给定一个长度为 N 的整数数组 A,请你将数组 A中的元素进行冒泡排序。
import java.util.ArrayList;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
int n = Integer.parseInt(str_0);
String str_1 = scan.nextLine();
String[] line_list_1 = str_1.trim().split(" ");
ArrayList<Integer> arr = new ArrayList<>();
for(int i = 0; i < line_list_1.length; i++) {
arr.add(Integer.parseInt(line_list_1[i]));
}
scan.close();
ArrayList<Integer> result = solution(n, arr);
for (int i = 0; i < result.size(); i++) {
System.out.println(result.get(i));
}
}
public static ArrayList<Integer> solution(int n, ArrayList<Integer> arr) {
ArrayList<Integer> result = new ArrayList<>();
// TODO: 请在此编写代码
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (arr.get(i) > arr.get(j)) {
int t = arr.get(i);
arr.set(i, arr.get(j));
arr.set(j, t);
}
}
}
result = arr; return result;
}
}
小明手头上有n个问题,每个问题都有一个数值,表示这个问题的难度;正好小明团队有n个人,每个人都有一个数值,表 示这个人的能力 现在小明要把这n个问题分配给每个人,要求能力更高的人分配到更高难度的问题。
import java.util.ArrayList;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
int n = Integer.parseInt(str_0);
ArrayList<Integer> arr1 = new ArrayList<>();
for (int i = 0; i < n; i++) {
String str_1 = scan.nextLine().trim();
arr1.add(Integer.parseInt(str_1)); }
ArrayList<Integer> arr2 = new ArrayList<>();
for (int i = 0; i < n; i++) {
String str_1 = scan.nextLine().trim();
arr2.add(Integer.parseInt(str_1));
}
scan.close();
ArrayList<Integer> result = solution(n, arr1, arr2);
for (int i = 0; i < result.size(); i++) {
System.out.println(result.get(i));
}
}
public static ArrayList<Integer> solution(int n, ArrayList<Integer> arr1, ArrayList<Integer> arr2) {
ArrayList<Integer> result = new ArrayList<>();
// TODO: 请在此编写代码
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (arr1.get(i) < arr1.get(j)) {
int t = arr1.get(i);
arr1.set(i, arr1.get(j));
arr1.set(j, t);
}
}
}
for (int i = 0; i < n; i++) {
result.add(0);
}
for (int i = 0; i < n; i++) {
int index = 0;
for (int j = 1; j < n; j++) {
if (arr2.get(j) > arr2.get(index)) {
index = j;
}
}
result.set(index, arr1.get(i));
arr2.set(index, -1);
}
return result;
}
}
对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成, 你需要将这些部分逆序。 给定一个原字符串A,请返回逆序后的字符串。例,输入”It’s a dog!“输出”dog! a It’s“。
import java.util.ArrayList;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.nextLine().trim(); scan.close();
ArrayList<String> result = solution(str);
for (int i = 0; i < result.size(); i++){
System.out.print(result.get(i) + " ");
}
}
public static ArrayList<String> solution(String str){
ArrayList<String> result = new ArrayList<>();
// TODO: 请在此编写代码
String[] strs = str.split(" ");
for (int i = strs.length - 1; i >= 0; i--) {
result.add(strs[i]);
}
return result;
}
}
以上就是关于CSDN编程竞赛第26期的所有题目解析,第1题使用了C来解答,后边3题使用了Java来实现,大家在比赛时可以选择自己习惯使用的语言来解答即可。
如果有什么问题,我们可以一起交流讨论解决。
最后,希望可以帮助到有需要的码友。