D19 C++PAT乙级

算法组-庄思彤 2024-02-08 20:37:35

img

计算谱半径

img


#include <iostream>
#include <cmath> 
using namespace std;

int main()
{
    int n;
    cin>>n;
    double p=0;
    while(n--)
    {
        int a,b;
        cin>>a>>b;
        double t=sqrt(a*a+b*b);  //计算复数模 
        p=max(p,t);  //取最大值 
    }
    printf("%.2lf\n",p);  //保留两位小数 
    return 0;
}

朋友数

img


#include<bits/stdc++.h>
using namespace std;
set<int> s;
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        string data;
        cin>>data;
        int num=0;   
        for(int i=0;i<data.size();i++){
            num+=data[i]-'0';  //计算各位数之和 
        }
        s.insert(num);  //将num插入集合,即朋友数 
    }
    cout<<s.size()<<endl;  //输出朋友数的个数 
    for(auto p=s.begin();p!=s.end();p++){
        if(p!=s.begin())   cout<<" ";  //输出朋友数 
        cout<<*p;      
    }
}

单身狗

img


#include <iostream>
#include <vector>
#include <set>
using namespace std;

int main()
{
    int n;
    cin>>n;
    vector<int> couple(100001,-1);
    for(int i=0;i<n;i++)
    {
        int a,b;
        cin>>a>>b;
        couple[a]=b;
        couple[b]=a;  //绑定情侣id 
    }
    int m;
    cin>>m;
    int a[m],list[100001]={0};
    set<int>dog;
    for(int i=0;i<m;i++)
    {
        cin>>a[i];  //出席者id 
        if(couple[a[i]]!=-1) list[couple[a[i]]]=1;  //出席且有对象,list登记对象id 
    }
    for(int i=0;i<m;i++)
    {
        if(!list[a[i]]) dog.insert(a[i]);  //没对象的 
    }
    cout<<dog.size()<<endl;
    for(auto p=dog.begin();p!=dog.end();p++)
    {
        if(p==dog.begin()) printf("%05d",*p);
        else printf(" %05d",*p);
    }
    return 0;
}

图像过滤

img

#include <iostream>
using namespace std;

int main()
{
    int m,n,a,b,x,num[501][501];
    cin>>m>>n>>a>>b>>x;
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            cin>>num[i][j];
            if(num[i][j]>=a&&num[i][j]<=b)
            {
                num[i][j]=x;  //范围内的数都替换 
            }
        }
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(j>0) cout<<" ";
            printf("%03d",num[i][j]);
        }
        cout<<endl;
    }
    return 0;
}


试密码

img



#include <stdio.h>
#include <string.h>
int main() {
    char p[22]={0},str[50]={0};
    int n,a=0;
    scanf("%s %d%*c",p,&n);  //吸收回车
    p[strlen(p)] ='\n';    //把正确密码最后的'\0'改为'\n',便于和得到的输入密码比较
    while (fgets(str,50,stdin) && strcmp(str,"#\n")!=0)
    {
        if(strcmp(str,p)!=0)
        {
            printf("Wrong password: %s",str);    //str最后一个字符是'\n',不用再手动换行
            if (++a==n)
            {
                printf("Account locked");
                break;
            }
        }
        else
        {
            printf("Welcome in");
            break;
        }
    }
    return 0;
}

微博转发抽奖

img

#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
using namespace std;
string asd[10001];  //判断是否已经中奖 
bool al(char id[]){
        for(int i=0;i<10001;i++)
        {
            if(id==asd[i]) return true;
        } 
        return false;
}

int main(){
    int a,b,c;  //总量,中奖间隔,第一位中奖者的序号 
    cin>>a>>b>>c; 
    int flag=0;  //判断是不是已经有中奖的 
    for(int i=1;i<=a;i++)
    {
        char id[21];
        scanf("%s",&id);
        if(i==c)
        {
            if(al(id)==false)
            {
                cout<<id<<endl;
                asd[i]=id;
                flag=1;
                c=c+b;
            }
            else 
            {
                c++;
            }
        }
                
    } 
    if(flag==0) cout<<"Keep going..."; 
}

结绳

img


#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int n;
    cin>>n;
    double a[10000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];  //各段绳长 
    }
    sort(a,a+n);  //排序 
    for(int i=1;i<n;i++)
    {
        double b=a[i-1]/2;  //前一根绳子折后 
        double c=a[i]/2;  //后一根绳子折后 
        a[i]=(b+c);  //串连后 
    }
    cout<<(int)a[n-1];
    return 0;
}



...全文
153 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

325

社区成员

发帖
与我相关
我的任务
社区描述
一个供Leaders学习交流的地方
c++javapython 技术论坛(原bbs) 广东省·深圳市
社区管理员
  • 叫我胡萝北
  • CheungZzzc
  • szu_gexu
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧