PTA部分题目C++重练

早上好啊,大佬们,最近不是开了算法的专栏嘛,但是还没有正式开始学习算法,还在接触学习C++的内容,但是大佬们也是知道的,如果不练习肯定是不能很好掌握的。

所以,小白兔可能在结束C++STL库内容之前会发几篇之前写的PTA的一些比较麻烦的题目,用C++重新写一遍。

L1-056 猜数字

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

typedef struct{
    char s[10];
    int guess;
}peo;
int main()
{
    int N, ave=0, k=0, dis=10000;
    peo x[10005];
    cin >> N;
    for (int i=0; i<N; i++)
    {
        cin >> x[i].s >> x[i].guess;
        ave += x[i].guess;
    }
    ave /= N*2;
    for (int i=0; i<N; i++)
    {
        if (dis > abs(ave - x[i].guess))
        {
            dis = abs(ave - x[i].guess);
            k = i;
        }
    }
    cout << ave << ' ' << x[k].s << endl;
    
    return 0;
}

L1-058 6翻了

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int cnt=0, i;
    string s;
    getline(cin, s);
    for (i=0; i<s.length(); i++)
    {
        if (s[i] == '6')
        {
            for (;s[i] == '6'; i++)
                cnt ++;
            if (cnt > 9) printf("27");
            else if (cnt > 3) printf("9");
            else
                for (int j=0; j<cnt; j++)
                    printf("6");
        }
        cnt = 0;
        printf("%c", s[i]);
    }
    cout << "\n";
    return 0;
}

L1-093 猜帽子游戏

cpp 复制代码
#include<iostream>
#include<cstdio>

using namespace std;

int main()
{
    int n,m;
    cin>>n;
    int a[101]={0};
    int s[101]={0};
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cin>>m;
while(m--)
{
int num=n,num1=0;
for(int i=0;i<n;i++)
{
cin>>s[i];
}
for(int i=0,j=0;i<n,j<n;i++,j++)
{
if(s[i]!=a[j]&&s[i]!=0)
{
num--;
}
if(s[i]==0)
{
num1++;
}
}
if(num==n&&num1!=n)
{
}

L1-101 别再来这么多猫娘了!

cpp 复制代码
#include<iostream>
#include<vector>
#include<string>

using namespace std;

const int N=110;

string str[N],s;

int main()
{
    int n;
    cin>>n;
    cin.ignore();//处理回车
    for(int i=0;i<n;i++) getline(cin,str[i]);
    
    int m;
    cin>>m;
    if(m==0) cout << 0 << endl << "He Xie Ni Quan Jia!";//如果m=0,那么无论如何都会违规,按要求进行输出
    else
    {
        cin.ignore();//处理回车
        int num=0;//记录违规的词的数量
        getline(cin,s);
        for(int i=0;i<n;i++)
        {
            while(s.find(str[i])!=s.npos)//这里使用string库中的find函数,如果找到违规词执行以下循环
            {
                int res=s.find(str[i]);//记录找到的违规词的位置
                num++;//数量加一
                s.erase(res,str[i].length());//使用string库中的erase函数删除这个违规词
                s.insert(res,"---");//因为后面还有判断所以不能直接替换先把出现违规词的地方用一个字符串代替,进行标记
            }
        }
        if(num>=m)
        //如果违规词的数量大于给出的阈值进行输出
        cout << num << endl << "He Xie Ni Quan Jia!";
        
        else//小于等于阈值的情况
        {
            while(s.find("---")!=-1)//如果找到了标记的地方进行循环
            {
                int t=s.find("---");//定义一个整型的t来存位置
                s.erase(t,3);//删除
                s.insert(t,"<censored>");//插入关键词
            }
            cout<<s<<endl;
        }
    }
}

L1-102 兰州牛肉面

cpp 复制代码
#include<iostream>

using namespace std;

const int N=110;

double much[N];//按题目要求需要用double类型的数组去存
int num[N];//存总营业额

int main()
{
    int n;
    cin>>n;
    double sum=0;
    for(int i=1;i<=n;i++)
    cin>>much[i];
    
    int a,b;
    while(cin>>a>>b,a!=0)//0 0的时候停止
    {
        sum+=much[a]*b;
        num[a]+=b;
    }
    for(int i=1;i<=n;i++)
    {
        printf("%d\n",num[i]);
    }
    printf("%.2f",sum);//精确到分就是小数点后两位
}

L1-103 整数的持续性

cpp 复制代码
#include<iostream>
#include<vector>

using namespace std;

int zhao(int num)//找持续性
{
    int res=0;//记录次数
    while(num>=10)//当num<10时停止查找
    {
        int s=1;//记录成绩
        while(num>0)//计算每一位相乘的积
        {
        s*=(num%10);
        num/=10;
    }
    num=s;//更新状态
    res++;
    }
    return res;
}

int main()
{
    int a,b;
    cin>>a>>b;
    int max=-1000;
    vector<int> llong;
    for(int i=a;i<=b;i++)
    {
        int res=zhao(i);
        if(res>max)//如果有更大的就将vecotr清空再将最大的值插入
        {
            max=res;
            llong.clear();
            llong.push_back(i);
        }
        else if(res==max)//如果和最大值一样则直接插入
        {
            llong.push_back(i);
        }
    }
    cout << max <<endl;
    for(int i=0;i<llong.size();i++)
    {
        if(i>0)
        cout<<" ";
        cout<<llong[i];
    }
}

总结

大家一定不要停下刷题的脚步哦,这东西也会有手生一说的,如果很久没写的话,也是会变差的。

OK,今天水一篇,我们下一篇见。Bye Bye~

相关推荐
云空18 分钟前
《解锁 Python 数据挖掘的奥秘》
开发语言·python·数据挖掘
青莳吖28 分钟前
Java通过Map实现与SQL中的group by相同的逻辑
java·开发语言·sql
Buleall35 分钟前
期末考学C
java·开发语言
重生之绝世牛码37 分钟前
Java设计模式 —— 【结构型模式】外观模式详解
java·大数据·开发语言·设计模式·设计原则·外观模式
小蜗牛慢慢爬行43 分钟前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
荒古前1 小时前
龟兔赛跑 PTA
c语言·算法
Colinnian1 小时前
Codeforces Round 994 (Div. 2)-D题
算法·动态规划
Algorithm15761 小时前
云原生相关的 Go 语言工程师技术路线(含博客网址导航)
开发语言·云原生·golang
用户0099383143011 小时前
代码随想录算法训练营第十三天 | 二叉树part01
数据结构·算法