每日两小时编程之旅(三)
每日两小时编程之旅(三)
洛谷篇(入门6-函数与结构体)
P5725距离函数(easy)
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x1,x2,x3,y1,y2,y3;
double dis1,dis2,dis3;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
dis1=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
dis2=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
dis3=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
printf("%.2lf",dis1+dis2+dis3);
return 0;
} P5736质数筛
#include<bits/stdc++.h>
using namespace std;
int n,a;//不需要数组
bool isPrime(int x)//判断是不是质数
{
if(x==0||x==1) return false;//0 1 2 单独判断
if(x==2) return true;
for(int i=2;i*i<=x;i++)
{
if(x%i==0) return false;
}
return true;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a;
if(isPrime(a)) cout<<a<<" ";
}
return 0;
} P5757闰年展示(easy)
#include<bits/stdc++.h>
using namespace std;
int x,y,ans,a[10010],k;//需要数组保存是闰年的年份
bool isRY(int x)//判断是不是闰年
{
if(x%400==0) return true;
else if(x%100!=0&&x%4==0) return true;
else return false;
}
int main()
{
cin>>x>>y;
for(int i=x;i<=y;i++)
{
if(isRY(i))
{
ans++;
a[k++]=i;
}
}
cout<<ans<<endl;
for(int i=0;i<k;i++) cout<<a[i]<<" ";
return 0;
} P5738歌唱比赛
#include<bits/stdc++.h>
using namespace std;
int n,m;
double a[110][22];//二位数组记录选手成绩
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
sort(a[i]+1,a[i]+m+1);//对各个评委给的分数排序
}
double max=-1;
for(int i=1;i<=n;i++)
{
for(int j=2;j<m;j++)//去掉最高分和最低分
{
a[i][0]+=a[i][j];
}
a[i][0]/=(m-2);
if(a[i][0]>max) max=a[i][0];//找出max
}
printf("%.2lf",max);//保留两位小数输出
return 0;
} P5739计算阶乘(easy)
#include<bits/stdc++.h>//万能头文件
using namespace std;
int factorial(int x)//计算阶乘函数,递归计算
{
int y;
if(x==1) y=1;
else y= x*factorial(x-1);
return y;
}
int main()
{
int n;
cin>>n;
int ans=factorial(n);//n最大为12,12的阶乘用int即可
cout<<ans;
return 0;
} P5461赦免战俘
#include<bits/stdc++.h>
using namespace std;
int n,p=1,a[1050][1050];
void di(int x,int l,int q) //x为正方形边长,l、q分别为递归正方形的横纵坐标
{
if(x==2) //递归边界
{
a[l][q]=0;
return;
}
for(int i=l; i<=l+x/2-1; i++)
for(int j=q; j<=q+x/2-1; j++)
a[i][j]=0; //将左上方的正方形清零
di(x/2,l+x/2,q);
di(x/2,l+x/2,q+x/2);
di(x/2,l,q+x/2); //此处是递归剩余的三个正方形
}
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
p*=2; //计算正方形的边长
for(int i=1; i<=p; i++)
for(int j=1; j<=p; j++)
a[i][j]=1; //将a数组先赋值为1
di(p,1,1); //开始递归
for(int i=1; i<=p; i++)
{
for(int j=1; j<=p-1; j++)
cout<<a[i][j]<<" ";
cout<<a[i][p]<<endl; //输出,此处可以避免输出行尾空格
}
return 0;
} P5740最厉害的学生
#include<bits/stdc++.h>
using namespace std;
int n,key;
struct students //定义学生信息结构体
{
char name[10];//姓名
int a,b,c;//三科成绩
int num;//总分
}stu[1010];
int main()
{
cin>>n;
int max=-1;
for(int i=0;i<n;i++)
{
cin>>stu[i].name>>stu[i].a>>stu[i].b>>stu[i].c;
stu[i].num=stu[i].a+stu[i].b+stu[i].c;
if(stu[i].num>max) //找出总分最高的
{
max=stu[i].num;
key=i;
}
}
printf("%s %d %d %d",stu[key].name,stu[key].a,stu[key].b,stu[key].c);
return 0;
} P5741旗鼓相当的对手-加强版
#include<bits/stdc++.h>
using namespace std;
int n;
struct students//学生信息结构体
{
char name[10];//姓名
int a,b,c;//三科成绩
int num;//总分
}stu[1010];
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>stu[i].name>>stu[i].a>>stu[i].b>>stu[i].c;
stu[i].num=stu[i].a+stu[i].b+stu[i].c;
}
for(int i=0;i<n;i++)//两个for循环比较,然后符合条件直接输出
{
for(int j=i+1;j<n;j++)
{
if(abs(stu[j].a-stu[i].a)<=5&&abs(stu[j].b-stu[i].b)<=5&&abs(stu[j].c-stu[i].c)<=5&&abs(stu[j].num-stu[i].num)<=10)
{
cout<<stu[i].name<<" "<<stu[j].name<<endl;
}
}
}
return 0;
} P2415集合求和(easy)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;//10的18次方,用long long
ll num,cnt;
int main()//找寻到规律即可
{
ll c;
while(cin>>c)//奇怪的输入
{
num+=c;
cnt++;
}
ll ans=num*pow(2,cnt-1);
cout<<ans;
return 0;
} P5743猴子吃桃(easy)
#include<bits/stdc++.h>
using namespace std;
int n,num=1;
int main()
{
cin>>n;
while(n!=1)//简单计算即可
{
num=2*num+2;
n--;
}
cout<<num;
return 0;
} P5744培训(easy)
#include<bits/stdc++.h>
using namespace std;
int n;
struct students//学员信息结构体
{
char name[10010];//姓名
int age;//年龄
int score;//分数
}stu[10010];
int main()
{
cin>>n;
for(int i=0;i<n;i++)//按照要求改变年龄和分数
{
cin>>stu[i].name>>stu[i].age>>stu[i].score;
stu[i].age++;
stu[i].score*=1.2;
if(stu[i].score>600) stu[i].score=600;
}
for(int i=0;i<n;i++) cout<<stu[i].name<<" "<<stu[i].age<<" "<<stu[i].score<<endl;//输出即可
return 0;
} 不知不觉今天居然写了这么多题啊,前面的基础题目今天也差不多都解决了,明天开始要进入到真正的算法环节了。希望我明天还能够多多AC,加油,奥里给!

查看13道真题和解析