【洛谷题单入门6】P5735\P5736\P5737\P5738\P5739

P5735 【深基7.例1】距离函数

题目描述

给出平面坐标上不在一条直线上三个点坐标 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) (x_1,y_1),(x_2,y_2),(x_3,y_3) (x1,y1),(x2,y2),(x3,y3) ,坐标值是实数,且绝对值不超过 100.00,求围成的三角形周长。保留两位小数。

对于平面上的两个点 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1,y1),(x2,y2) ,则这两个点之间的距离 d i s = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 dis=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} dis=(x2x1)2+(y2y1)2

输入格式

输入三行,第 i 行表示坐标 ( x i , y i ) (x_i,y_i) (xi,yi) ,以一个空格隔开。

输出格式

输出一个两位小数,表示由这三个坐标围成的三角形的周长。

输入输出样例

输入

0 0
0 3
4 0

输出

12.00

代码如下

#include
#include
#include
using namespace std;
double dis(double x1,double y1,double x2, double y2){  //求两点间距离 double len; len=sqrt(pow(x1-x2,2)+pow(y1-y2,2));return len;
}
int main(){double x1,y1,x2,y2,x3,y3,c;  //c表示周长 cin>>x1>>y1>>x2>>y2>>x3>>y3;c=dis(x1,y1,x2,y2)+dis(x2,y2,x3,y3)+dis(x1,y1,x3,y3);cout<<fixed<<setprecision(2)<<c;return 0;
}

P5736 【深基7.例2】质数筛

题目描述

输入 n 个不大于 1 0 5 10^5 105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。

输入格式

第一行输入一个正整数 n,表示整数个数。

第二行输入 n 个正整数 a i a_i ai ,以空格隔开。

输出格式

输出一行,依次输出 a i a_i ai中剩余的质数,以空格隔开。

输入输出样例

输入

5
3 4 5 6 7

输出

3 5 7

代码如下

#include
using namespace std;
bool isprime(int n){  //判断是不是素数 if(n<2) {return 0;}  //如果小于2则不是素数 for(int i=2; i*i<=n; i++){if(n%i==0){return 0;}   //不是返回0 	}return 1;
}
int main(){int n,data;cin>>n;for(int i=1; i<=n; i++){  //依次输入数据 cin>>data;if(isprime(data)){cout<<data<<" ";}}return 0;
}

P5737 【深基7.例3】闰年展示

题目描述

输入 x , y x,y x,y ,输出 [ x , y ] [x,y] [x,y] 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。

输入格式

输入两个正整数 x , y x,y x,y ,以空格隔开。

输出格式

第一行输出一个正整数,表示 [ x , y ] [x,y] [x,y] 区间中闰年个数。

第二行输出若干个正整数,按照年份单调递增的顺序输出所有闰年年份数字。

输入输出样例

输入

1989 2001

输出

3
1992 1996 2000

代码如下

#include
using namespace std;
int a[1000]; //存放年份 
bool year(int n){  //判断是不是闰年 if(n%4==0 && n%100 != 0 || n%400 == 0){return 1;}  	else{return 0;}
}
int main(){int x,y,cnt=0,k=0; //k为a数组下标 cin>>x>>y;for(int i=x; i<=y; i++){     if(year(i)){cnt++;a[k++]=i; }   }cout<<cnt<<endl;for(int i=0; i<cnt; i++){cout<<a[i]<<" ";} return 0;
}

P5738 【深基7.例4】歌唱比赛

题目描述

n ( n ≤ 100 ) n(n\le 100) n(n100) 名同学参加歌唱比赛,并接受 m ( m ≤ 20 ) m(m\le 20) m(m20) 名评委的评分,评分范围是 0 到 10 分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下 m − 2 m-2 m2 个评分的平均数。请问得分最高的同学分数是多少?评分保留 2 位小数。

输入格式

第一行两个整数 n,m。
接下来 n 行,每行各 m 个整数,表示得分。

输出格式

输出分数最高的同学的分数,保留两位小数。

输入输出样例

输入

7 6
4 7 2 6 10 7
0 5 0 10 3 10
2 6 8 4 3 6
6 3 6 7 5 8
5 9 3 3 8 1
5 9 9 3 2 0
5 8 0 4 1 10

输出

6.00

代码如下

#include
#include
#include
using namespace std;
int d[110];  //存放分数 
float ave[30];  //存放平均分 
int main(){int n,m;cin>>n>>m;for(int i=1; i<=n; i++){float ans=0;  //每个人初始分数为0 for(int j=1; j<=m; j++){cin>>d[j];}sort(d+1,d+m+1);  //对总分进行排序 sort函数不包括末位置 for(int j=2; j<=m-1; j++){ans+=d[j];}ave[i]=ans*1.0/(m-2);}sort(ave+1,ave+n+1);  //对平均分进行排序 cout<<fixed<<setprecision(2)<<ave[n];return 0;
}

P5739 【深基7.例7】计算阶乘

题目描述

求 n!,也就是 1 × 2 × 3 ⋯ × n 1\times2\times3\dots\times n 1×2×3×n

挑战:尝试不使用循环语句(for、while)完成这个任务。

输入格式

第一行输入一个正整数 n。

输出格式

输出一个正整数,表示 n!。

输入输出样例

输入

3

输出

6

代码如下

#include
using namespace std;
int f(int x){  //递归方法求阶乘 if(x==1){return 1;}else{return x*=f(x-1);}
}
int main(){int n;cin>>n;cout<<f(n);return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部