洛谷-入门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; 
}
相关推荐
郝学胜_神的一滴1 小时前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
复杂网络1 小时前
论最小 Agent 计算机的形态
算法
kisshyshy17 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
众少成多积小致巨18 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
猿人谷1 天前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络1 天前
Stable Diffusion 视觉大模型微调技术深度调研
算法
复杂网络1 天前
基于 Stable Diffusion 架构的视觉大模型代表性工作与原理深度解析
算法
MrZhao4001 天前
Agent Loop 如何用 Hook 扩展:权限、日志与工具拦截
算法
MrZhao4001 天前
Agent 为什么需要 Skills:别把所有知识都塞进 system prompt
算法
JieE2123 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法