排序的练习题

今天LITTLESUN终于可以闯排序的关了!

先是刷了一道水题试炼一下STL的快排,顺便练习了一下约分(求最大公约数)的技能。

T1     洛谷P1888三角函数 题目链接:https://www.luogu.org/problemnew/show/P1888

这道题如果注意到题目中的条件是勾股数很快就可以A掉,但如果惯性思维的用余弦定理来转换为正弦定理。在计算过程中会有部分测试点的数据范围直接把long long炸掉。

LITTLESUN的代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int A[5];
for(int i=1;i<=3;i++)
{
scanf("%d",&A[i]);
}
sort(A,A+2);
int css=A[2]*A[2]+A[3]*A[3]-A[1]*A[1];
int csx=2*A[2]*A[3];

css=css/__gcd(css,csx);
csx=csx/__gcd(css,csx);
cout<<css<<"/"<<csx;
return 0;
}

 

T2     洛谷P1866编号 题目链接:https://www.luogu.org/problemnew/show/P1866

这道题也只是简单的用了STL中的快排,这道题中的“mod 1000000007”非常关键,我们不能直接让结果mod 1000000007,因为在过程中数据就足以炸掉long long。根据加减乘的运算中过程先mod对结果不造成影响。所以我们应该在计算中每一步都mod 1000000007。

LITTLESUN的代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 10000
using namespace std;
int A[MAXN];
int main()
{
int N;
scanf("%d",&N);
for(int i=1;i<=N;i++)
{
scanf("%d",&A[i]);
}
sort(A+1,A+N+1);
long long num=1;
bool a=0;
for(int i=1;i<=N;i++)
{
num=num*(A[i]-(i-1));
num=num%1000000007;
a=1;
}
if(a==1)
{
printf("%lld",num);
}
else
{
printf("0");
}
return 0;
}

 

T3     洛谷P1125笨小猴  题目链接:https://www.luogu.org/problemnew/show/P1125

这道题用到的是桶排序,注意在将字符串转化后数字应存在数组中。在判断是否为素数时要记得考虑0和1 的特殊情况。

LITTLESUN的代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 10010
using namespace std;
char A[MAXN];
int B[MAXN]={0},a[MAXN];
bool pd(int i)
{
int k=2;
for(;k<=sqrt(i)&&i%k!=0;k++);
if(k>sqrt(i)&&i!=1&&i!=0)return 1;
else return 0;
}
int main()
{
scanf("%s",A);
for(int i=0;i<strlen(A);i++)
{
a[i]=A[i]-'a';
}
for(int i=0;i<strlen(A);i++)
{
B[a[i]]++;
}
//printf("%d",B[4]);
int maxn=-1;
int minn=500;
for(int i=0;i<=25;i++)
{
if(B[i]>maxn)
{
maxn=B[i];
}
if(B[i]<minn&&B[i]!=0)
{
minn=B[i];
}
}
//printf("%d%d",maxn,minn);
int num=maxn-minn;
if(pd(num))
{
printf("Lucky Word\n");
printf("%d",num);
}
else
{
printf("No Answer\n");
printf("0");

}
return 0;
}

先暂时整理到这里了,之后再做到有关排序的简单题还会继续更新。

 

转载于:https://www.cnblogs.com/LITTLESUNwl/p/10458592.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
综合试题及答案,帮助大家更好的复习.25、用一组地址连续的存储单元存放的元素一定构成线性表。( ) A ) 平均情况下,快速排序法最快,堆积排序法最节省空间 若线性表采用顺序存储结构,每个数据元素占用4个存储单元,第12个数据元素的存储地址为144,则第1个数据元素的存储地址是101。Loc(ai)=locl+(i—1)( ) 若长度为n的线性表采用顺序存储结构,删除表的第i个元素之前需要移动表中n-i+1个元素。( )【这是插入的,删除的n-i】 确定串T在串S中首次出现的位置的操作称为串的模式匹配。( 深度为h的非空二叉树的第i层最多有2i-1 个结点。 散列表的查找效率主要取决于所选择的散列函数与处理冲突的方法。 稀疏矩阵压缩存储后,必会失效掉随机存取功能 若一个有向图的邻接矩阵中,对角线以下元素均为0,则该图的拓扑有序序列必定存在。( ) 二叉树可以用0≤度≤2的有序树来表示。 非空双向循环链表中由q所指的结点后面插入一个由p指的结点的动作依次为:p->prior=q, p->next=q->next,q->next=p,q->prior->next←p。( ) 删除非空链式存储结构的堆栈(设栈顶指针为top)的一个元素的过程是依次执行:p=top,top= p->next,free (p)。( ) 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。( ) 在索引顺序表上实现分块查找,在等概率查找情况下,其平均查找长度不与表的个数有关,而与每一块中的元素个数有关 无向图的邻接矩阵是对称的有向图的邻接矩阵是不对称的。( _ D _ C B D D C C A B ( C A B D D C B. C C D 如果某图的邻接矩阵是对角线元素均为零的上三角矩阵,则此图是 D D D C A D A D D B A D A B D B C B ( D A B D C 6___ ( C D D __ C A B D 针q所指 C A A D A D B  D A② D A、 )的有限集合 C _B A  C A  C A D ( D C A D B ( B D ( D _ A A ) ( C A ( B ( B D 只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值