每日两小时编程之旅(三)

每日两小时编程之旅(三)

洛谷篇(入门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,加油,奥里给!

全部评论

相关推荐

03-24 17:57
门头沟学院 Java
yakuso:你这头像哈哈哈
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务