洛谷-入门6-函数与结构体

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

题目描述

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

对于平面上的两个点 (x1​,y1​),(x2​,y2​),则这两个点之间的距离 dis=(x2​−x1​)2+(y2​−y1​)2​。

输入格式

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

输出格式

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

输入输出样例

输入 #1复制

复制代码
0 0
0 3
4 0

输出 #1复制

复制代码
12.00

说明/提示

数据保证,坐标均为实数且绝对值不超过 100,小数点后最多仅有 3 位。

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1000;

double fun(double a,double b,double c,double d){
	double x=(a-c)*(a-c)+(b-d)*(b-d);
	return sqrt(x);
}

int main(){
	double a,b,c,d,e,f;
	cin>>a>>b;
	cin>>c>>d;
	cin>>e>>f;
	double t1=fun(a,b,c,d);
	double t2=fun(a,b,e,f);
	double t3=fun(c,d,e,f);
	printf("%.2lf",t1+t2+t3);
	return 0; 
}

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

题目描述

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

输入格式

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

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

输出格式

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

输入输出样例

输入 #1复制

复制代码
5
3 4 5 6 7

输出 #1复制

复制代码
3 5 7

说明/提示

数据保证,1≤n≤100,1≤ai​≤105。

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1000;
int n,t;
int s[N];

int fun(int x){
	for(int i=2;i*i<=x;i++){
		if(x%i==0){
			return 0;
		}
	}
	return 1;
}

int main(){
	cin>>n;
	int x=1;
	for(int i=1;i<=n;i++){
		cin>>t;
		if(t>=2&&fun(t)==1){
			s[x++]=t;
		}
	}
	for(int i=1;i<x;i++){
		cout<<s[i]<<" ";
	}
	return 0; 
}

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

题目描述

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

输入格式

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

输出格式

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

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

输入输出样例

输入 #1复制

复制代码
1989 2001

输出 #1复制

复制代码
3
1992 1996 2000

说明/提示

数据保证,1582≤x<y≤3000。

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1000;
int n,t;
int s[N];

int fun(int x){
	if(x%100!=0&&x%4==0||x%400==0){
		return 1;
	}
	return 0;
}

int main(){
	int x=1,sum=0;
	cin>>n>>t;
	for(int i=n;i<=t;i++){
		if(fun(i)==1){
			s[x++]=i;
			sum++;
		}
	}
	cout<<sum<<endl;
	for(int i=1;i<=sum;i++){
		cout<<s[i]<<" ";
	}
	return 0; 
}

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

题目描述

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

输入格式

第一行两个整数 n,m。

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

输出格式

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

输入输出样例

输入 #1复制

复制代码
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

输出 #1复制

复制代码
6.00

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1000;
int n,t;
int s[N][N];

int main(){
	double sum,ma=0;
	int minn,maxn;
	cin>>n>>t;
	for(int i=1;i<=n;i++){
		sum=0;
		minn=10,maxn=0;
		for(int j=1;j<=t;j++){
			cin>>s[i][j];
			sum+=s[i][j];
			minn=min(minn,s[i][j]);
			maxn=max(maxn,s[i][j]);
		}
		sum=(sum-minn-maxn)/(t-2);
		ma=max(ma,sum);
	}
	printf("%.2lf",ma);
	return 0; 
}

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

题目描述

求 n!,也就是 1×2×3⋯×n。

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

输入格式

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

输出格式

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

输入输出样例

输入 #1复制

复制代码
3

输出 #1复制

复制代码
6

说明/提示

数据保证,1≤n≤12。

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1000;
int n,t;
int s[N][N];

int main(){
	cin>>n;
	int sum=1;
	for(int i=1;i<=n;i++){
		sum=sum*i;
	}
	cout<<sum;
	return 0; 
}
相关推荐
老四啊laosi2 小时前
[C++进阶] 21. 红黑树
c++·红黑树
Robot_Nav2 小时前
基于深度强化学习的自主导航与避障策略研究
开发语言·深度强化学习·learning_based
故以往之不谏2 小时前
JAVA--类和对象4.1--构造方法基础
java·开发语言·javascript
代码栈上的思考2 小时前
消息队列自定义应用层协议设计:参数取舍与响应封装的核心逻辑
开发语言·php
青瓷程序设计2 小时前
【基于 YOLO的咖啡豆果实成熟度检测系统】+ Python+算法模型+目标检测+2026原创
python·算法·yolo
程序员Shawn2 小时前
【机器学习 | 第七篇】- 聚类算法
算法·机器学习·聚类
cch89182 小时前
PHP与C语言:从网页到内核的编程对决
c语言·开发语言·php
lly2024062 小时前
PHP 字符串处理详解
开发语言
地平线开发者2 小时前
征程 6X watchdog 问题分析
算法·自动驾驶