排序的练习题

今天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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值