入门6函数与结构体

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门6函数与结构体相关的知识,希望对你有一定的参考价值。

https://www.luogu.com.cn/training/105#problems

目录

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

#include<bits/stdc++.h>
using namespace std;
double x[15],y[15];
double solve(double x,double y,double xx,double yy)

	return sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));

int main(void)

	for(int i=0;i<3;i++) cin>>x[i]>>y[i];
	double sum=0;
	sum+=solve(x[0],y[0],x[1],y[1]);
	sum+=solve(x[0],y[0],x[2],y[2]);
	sum+=solve(x[1],y[1],x[2],y[2]);
	printf("%.2lf",sum);
	return 0;

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

#include<bits/stdc++.h>
using namespace std;
int a[105],n;
int main(void)

	cin>>n;
	for(int i=0;i<n;i++)
	
		cin>>a[i];
		int flag=0;
		for(int j=2;j<=sqrt(a[i]);j++)
			if(a[i]%j==0) flag=1;
		if(!flag&&a[i]!=1) cout<<a[i]<<" ";
	
	return 0;

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

#include<bits/stdc++.h> 
using namespace std;
int l,r;
vector<int>ve; 
int check(int x) 

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

int main(void)

	cin>>l>>r;
	for(int i=l;i<=r;i++)
		if(check(i)) ve.push_back(i);
	cout<<ve.size()<<endl;
	for(int i=0;i<ve.size();i++) cout<<ve[i]<<" ";
	return 0;

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

#include<bits/stdc++.h>
using namespace std;
int n,m,a[105];
double ans;
int main(void)

	cin>>n>>m;
	for(int i=1;i<=n;i++)
	
		double sum=0;
		for(int j=0;j<m;j++) cin>>a[j],sum+=a[j];
		sort(a,a+m);
		ans=max(ans,(sum-a[0]-a[m-1])/(m-2));
	
	printf("%.2lf",ans);
	return 0;

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

#include<bits/stdc++.h> 
using namespace std;
int main(void)

	long long int n; cin>>n;
	long long int sum=1;
	while(n) sum*=n,n--;
	cout<<sum;
	return 0;

P5461 赦免战俘

#include<bits/stdc++.h> 
using namespace std;
const int N=1050;
int a[N][N],n;
int main(void)

	cin>>n;
	n=pow(2,n);
	a[1][n]=1;
	for(int i=2;i<=n;i++)
	
		for(int j=1;j<=n;j++)
			a[i][j]=(a[i-1][j]+a[i-1][j+1])%2;
	
	for(int i=1;i<=n;i++)
	
		for(int j=1;j<=n;j++) cout<<a[i][j]<<" ";
		cout<<endl;
	
	return 0;

//0 1
//1 1

//0 0 0 1 
//0 0 1 1
//0 1 0 1
//1 1 1 1

//0 0 0 0 0 0 0 1
//0 0 0 0 0 0 1 1
//0 0 0 0 0 1 0 1
//0 0 0 0 1 1 1 1
//0 0 0 1 0 0 0 1
//0 0 1 1 0 0 1 1
//0 1 0 1 0 1 0 1
//1 1 1 1 1 1 1 1
#include<bits/stdc++.h> 
using namespace std;
const int N=1050;
int a[N][N],n;
void dfs(int n,int x,int y)

	if(n==1) return;
	for(int i=x;i<=x+n/2-1;i++)
		for(int j=y;j<=y+n/2-1;j++) a[i][j]=0;
	dfs(n/2,x,y+n/2);
	dfs(n/2,x+n/2,y);
	dfs(n/2,x+n/2,y+n/2);

int main(void)

	cin>>n;
	n=pow(2,n);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++) a[i][j]=1;
	dfs(n,1,1);
	for(int i=1;i<=n;i++)
	
		for(int j=1;j<=n;j++)
		
			cout<<a[i][j]<<" ";
		
		puts("");
	
	return 0;

P5740 【深基7.例9】最厉害的学生

#include<bits/stdc++.h>
using namespace std;
struct node

	string name;
	int a,b,c,id;
temp;
int n;
vector<node>ve;
bool cmp(node a,node b)

	if(a.a+a.b+a.c!=b.a+b.b+b.c) return a.a+a.b+a.c>b.a+b.b+b.c;
	return a.id<b.id;

int main(void)

	cin>>n;
	for(int i=0;i<n;i++)
	
		cin>>temp.name>>temp.a>>temp.b>>temp.c;
		temp.id=i;
		ve.push_back(temp);
	
	sort(ve.begin(),ve.end(),cmp);
	cout<<ve[0].name<<" "<<ve[0].a<<" "<<ve[0].b<<" "<<ve[0].c;
	return 0;

P5741 【深基7.例10】旗鼓相当的对手 - 加强版

#include<bits/stdc++.h>
using namespace std;
struct node

	string name;
	int a,b,c;
temp;
vector<node>ve;
vector< pair<string,string> >s;
int n;
int main(void)

	cin>>n;
	for(int i=0;i<n;i++)
	
		cin>>temp.name>>temp.a>>temp.b>>temp.c;
		ve.push_back(temp);
	
	for(int i=0;i<n;i++)
	
		for(int j=i+1;j<n;j++)
		
			if(abs(ve[i].a-ve[j].a)>5) continue;
			if(abs(ve[i].b-ve[j].b)>5) continue;
			if(abs(ve[i].c-ve[j].c)>5) continue;
			if(abs(ve[i].a+ve[i].b+ve[i].c-ve[j].a-ve[j].b-ve[j].c)>10) continue;
			if(ve[i].name<=ve[j].name) s.push_back(ve[i].name,ve[j].name);
			else s.push_back(ve[j].name,ve[i].name);
		
	
	sort(s.begin(),s.end());
	for(int i=0;i<s.size();i++) cout<<s[i].first<<" "<<s[i].second<<endl;
	return 0;

P5742 【深基7.例11】评等级

#include<bits/stdc++.h>
using namespace std;
int main(void)

	int n; cin>>n;
	while(n--) 
	
		int id,a,b; cin>>id>>a>>b;
		int sum=a+b;
		if(sum>140&&(a*7+b*3>=800)) cout<<"Excellent"<<endl;
		else cout<<"Not excellent"<<endl;
	
	return 0;

P1075 [NOIP2012 普及组] 质因数分解

#include<bits/stdc++.h>
using namespace std;
int check(int x)

	for(int i=2;i<=x/i;i++)
		if(x%i==0) return 0;
	return 1;

int main(void)

	int n; cin>>n;
	for(int i=2;i<=n/i;i++)
	
		if(n%i==0)
		
			if(check(i)&&check(n/i))
			
				cout<<n/i;
				return 0;
			
		
	
	return 0;

P1304 哥德巴赫猜想

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int prime[N],st[N],cnt;
void init(int n)

	st[0]=1,st[1]=1;
	for(int i=2;i<=n;i++)
	
		if(!st[i]) prime[cnt++]=i;
		for(int j=0;prime[j]<=n/i;j++)
		
			st[i*prime[j]]=1;
			if(i%prime[j]==0) break;
		
	

int main(void)

	init(1e5);
	int n; cin>>n;
	for(int i=2;i<=n;i+=2)
	
		for(int j=0;j<cnt;j++)
		
			if(prime[j]>i) break;
			if(!st[i-prime[j]以上是关于入门6函数与结构体的主要内容,如果未能解决你的问题,请参考以下文章

C++入门基础教程:C语言的指针与结构体到底怎么用?

C++入门基础教程:C语言的指针与结构体到底怎么用?

6-2 使用函数验证哥德巴赫猜想 (20分)

[PTA]习题6-5 使用函数验证哥德巴赫猜想

习题6-5 使用函数验证哥德巴赫猜想 (20 分)

[PTA]实验6-6 使用函数验证哥德巴赫猜想