1.整数序列中两个相邻的数,如果后面的数小于前面的数,则称这两个数值构成了一个逆序对。例如,整数序列10,4,16,8,21,18,9中包含了4个逆序对。从键盘上输入个由空格分隔的整数,编程输出其中包含的逆序对的数量。
在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
C语言竞赛初级组第一、二场答案:https://www.cnblogs.com/xingkongyihao/p/10046918.html
A: 逆序对时间限制: 1 s 内存限制: 128 MB
题目描述1.整数序列中两个相邻的数,如果后面的数小于前面的数,则称这两个数值构成了一个逆序对。例如,整数序列10,4,16,8,21,18,9中包含了4个逆序对。从键盘上输入个由空格分隔的整数,编程输出其中包含的逆序对的数量。 输入第一行输入一个数字 第二行输入n个由空格分隔的整数 输出输出一个数字,表示逆序对的答案 样例输入7
10 4 16 8 21 18 9
样例输出4
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
public class Program
{
public static void Main()
{
int cunt = 0;
int n = ri();
List<int> a = new List<string>(Console.ReadLine().Split()).ConvertAll(i => int.Parse(i));
for (int i = 1; i < n; i++)
{
if (a[i] < a[i - 1])
{
cunt++;
}
}
Console.WriteLine(cunt);
Console.ReadKey();
}
public static int ri() { return int.Parse(Console.ReadLine()); }
static int[] rla(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e =>int.Parse(e)); }
}
B: sky的圈圈时间限制: 1 s 内存限制: 128 MB
题目描述最近小S不高兴了,所以她就想画圈圈,有大有小的。而现在她想让你也画圈圈了^_^。 大小为3的圈圈是,大小为4的圈圈是,大小为5的圈圈是,依次类推。 输入输入一个数字 输出输出你画的圈圈。 样例输入3
样例输出*#*
#*#
*#*
using System;
using System.IO;
using System.Linq;
public class Program
{
public static void Main()
{
var n = ri();
char[,] Map = new char[200,200];
Map[0, 0] = '*';
Map[0, n - 1] = '*';
Map[n - 1, 0] = '*';
Map[n - 1, n - 1] = '*';
for (int i = 1; i < n-1; i++)
{
Map[0, i] = '#';
Map[n - 1, i] = '#';
}
for (int i = 1; i < n - 1; i++)
{
Map[i, 0] = '#';
Map[i, n-1] = '#';
}
for (int i = 1; i < n - 1; i++)
{
for (int j = 1; j < n - 1; j++)
{
Map[i, j] = '*';
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(Map[i,j]);
}
Console.WriteLine();
}
Console.ReadKey();
}
public static int ri() { return int.Parse(Console.ReadLine()); }
static int[] rla(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e =>int.Parse(e)); }
}
C: 找零钱时间限制: 1 s 内存限制: 128 MB
题目描述小明现在有元的物品,商店里有五种货币,100元、20元、10元、5元、1元无限张,服务员会以最小的数量找零钱。问小明用x元买了一件y元的物品后找了多少张零钱。 输入输入x和y两个整数 输出输出找零钱的最小的数量 样例输入101 66
样例输出3
提示用101元买了一件66元的物品,需要找35元,一张20元、一张10元和一张5元。 贪心,取模取模取模 using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
public class Program
{
public static void Main()
{
int cunt;
int result = 0;
List<int> a = new List<string>(Console.ReadLine().Split()).ConvertAll(i => int.Parse(i));
cunt = a[0] - a[1];
result += cunt / 100;
cunt %= 100;
result += cunt / 20;
cunt %= 20;
result += cunt / 10;
cunt %= 10;
result += cunt/5;
cunt %= 5;
result += cunt / 1;
Console.WriteLine(result);
Console.ReadKey();
}
public static int ri() { return int.Parse(Console.ReadLine()); }
static int[] rla(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e =>int.Parse(e)); }
}
D: 编程语言时间限制: 1 s 内存限制: 128 MB
题目描述现在的编程越来越多了,比如C、C++、Java、Python、C#、PHP等等。现在给定n种编程语言,每种语言还会给一个[1,n]之间的随机值,保证不重复。现在让你按随机值从小到大排序,然后输出对应的语言。 输入第一行输入一个整数 接下来n行,每行有一个字符串和一个随机值,字符串表示一种语言,长度不超过20.随机值范围为[1,n] 输出输出n行,按随机值从小到大输出对应的语言 样例输入4
Java 3
C 1
Python 4
C++ 2
样例输出C
C++
Java
Python
using System;
using System.Collections;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
public class Program
{
public static void Main()
{
var n = ri();
ArrayList al = new ArrayList();
for (int i = 0; i < n; i++)
{
Language La = new Language();
var x = Console.ReadLine().Split();
La.xx = x[0];
La.yy = int.Parse(x[1]);
al.Add(La);
}
Languagex languagex = new Languagex();
al.Sort(languagex);
Language Laa = new Language();
for (int i = 0; i < n; i++)
{
Laa = (Language) al[i];
Console.WriteLine(Laa.xx);
}
Console.ReadKey();
}
public class Language
{
public string xx;
public int yy;
}
public class Languagex:IComparer
{
public int Compare(object x, object y)
{
return ((Language) x).yy.CompareTo(((Language) y).yy);
}
}
public static int ri() { return int.Parse(Console.ReadLine()); }
static int[] rla(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e =>int.Parse(e)); }
}
E: 四边形面积时间限制: 1 s 内存限制: 128 MB
题目描述有一个四边形,现在需要求它的面积 输入输入四行,每行两个数整数,四个点是按逆时针输入的。 输出输出四边形的面积,保留3位小数点, 样例输入0 0
10 0
1 1
0 11
样例输出10.500
提示C语言中保留3位小数用%.3lf 用法:printf("%.3lf",result) 四边形分凸凹四边形。 提示都告诉你了 #include<bits/stdc++.h>
using namespace std;
struct Point
{
float x, y;
};
float LinearIntegration(const Point &p1, const Point &p2)
{
return 0.5 * (p2.x - p1.x) * (p2.y + p1.y);
}
float ComputePolygonArea(const Point points[], int length)
{
if (points == NULL || length <= 0) return 0.0;
float area = 0.0;
for (int i = 0; i < length - 1; ++ i)
{
area += LinearIntegration(points[i], points[i + 1]);
}
area += LinearIntegration(points[length - 1], points[0]);
return area >= 0.0 ? area : -area;
}
int main()
{
int n;
Point a[4];
for(int i=0; i<4;i++) cin>>a[i].x>>a[i].y;
float ans = ComputePolygonArea(a,4);
printf("%.3f\n",ans);
return 0;
}
F: 进制转换时间限制: 1 s 内存限制: 128 MB
题目描述给定一个区间[l, r],从之间的所有数依次转换成16进制然后连在一起,接着再转换成10进制,最后再对15取模。 输入输入两个是 输出输出对15取模的结果。 样例输入10 14
样例输出0
提示样例说明: 10、11、12、13、14的16进制分别是a、b、c、d、e。依次连在一起是abcde,转换成10进制是703710,对15取模为0。 一般的转化。(a*16^n+b*16^(n-1)..)%15,展开,a%16*16^n%15,16%15就可以不考虑了,于是变成a%15+b%15..。于是简化成a+b+c+d+e。注意取模 using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection.Emit;
using System.Runtime.InteropServices;
public class Program
{
public static void Main()
{
var str = "";
List<int> a = new List<string>(Console.ReadLine().Split()).ConvertAll(i => int.Parse(i));
var sum = 0;
for (int i = a[0]; i <= a[1]; i++)
{
var pa = Convert.ToString(i, 16);
//var pa = Convert.ToInt32(x, 16).ToString();
var len = pa.Length;
for (int j = 0; j < len; j++)
{
if (pa[j] == 'a')
{
sum += (10);
sum %= 15;
}
else if (pa[j] == 'b')
{
sum += (11);
sum %= 15;
}
else if (pa[j] == 'c')
{
sum += (12);
sum %= 15;
}
else if (pa[j] == 'd')
{
sum += (13);
sum %= 15;
}
else if (pa[j] == 'e')
{
sum += (14);
sum %= 15;
}
else if (pa[j] == 'f')
{
sum += (15);
sum %= 15;
}
else
{
sum += int.Parse(pa[j].ToString());
sum %= 15;
}
}
}
Console.WriteLine(sum%15);
Console.ReadKey();
}
public static int ri() { return int.Parse(Console.ReadLine()); }
static int[] rla(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e =>int.Parse(e)); }
}
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论