D20 C++PAT乙级

算法组-庄思彤 2024-02-12 20:26:29

小赌怡情

img


#include <iostream>
using namespace std;

int main(){
    int T,K;
    int n1,b,t,n2;
    cin>>T>>K;
    while(K--){
        cin>>n1>>b>>t>>n2;
        if (t>T) 
        {
            printf("Not enough tokens.  Total = %d.\n",T);
            continue;
        }
        if(n2>n1&&b==1)
        {
            T+=t;
            printf("Win %d!  Total = %d.\n",t,T);
        }
        else if(n2<n1&&b==0)
        {
            T+=t;
            printf("Win %d!  Total = %d.\n",t,T);
        }
        else
        {
            T-=t;
            printf("Lose %d.  Total = %d.\n",t,T);
        }
        if (T<=0)
        {
            cout << "Game Over." << endl;
            break;
        }
    }
    return 0;
}


开学寄语

img


#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
  int n,m;  //学生人数,物品种类数 
  cin>>n>>m;
  vector<int> vec;
  for(int i=0;i<m;i++)
  {
    int id;  //物品种类 
    cin>>id;
    vec.push_back(id);
  }
  int tn=0;  //被查缴物品总数 
  int pn=0;  //有问题学生总数 
  for(int i=0;i<n;i++)
  {
    string name;  //学生姓名 
    cin>>name;
    int num;  //单个学生物品数 
    cin>>num;
    int cnt=0;
    for(int j=0;j<num;j++)
    {
      int id;  //单个学生物品 
      cin>>id;
      if(find(vec.begin(),vec.end(),id)!=vec.end())
      {
        if(cnt==0)
        {
          cout<<name<<":";
          printf(" %04d",id);
          cnt++;
          tn++;
          pn++;
        }
        else
        {
          printf(" %04d",id);
          tn++;
        }
      }
    }
    if(cnt!=0)
      cout<<endl;
  }
  cout<<pn<<" "<<tn<<endl;
  return 0;
}

WiFi密码

img


#include <iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<4;j++)
        {
            string s;
            cin>>s;
            if(s[2]=='T') cout<<s[0]-'A'+1;
        }
    }
    return 0;
}

字符串压缩与解压

img


#include <iostream>
using namespace std;
int main() {
    char cd;
    cin>>cd;
    getchar();
    string s,num;
    getline(cin,s);
    int cnt=1;
    if (cd=='D') {
        for (int i=0;i<s.length();i++)
        {
            if (s[i]>='0'&&s[i]<='9')
            {
                num+=s[i];
            }
            else
            {
                if (num.length()>0) cnt=stoi(num);
                while(cnt--) cout<<s[i];
                cnt=1;
                num="";
            }
        }
    } 
    else if(s.length()!=0)
    {
        char a=s[0];
        for (int i=1;i<s.length();i++)
        {
            if (s[i]==a) 
            {
                cnt++;
            } 
            else 
            {
                if (cnt>=2) cout<<cnt;
                cout<<a;
                cnt=1;
                a=s[i];
            }
        }
        if (cnt>=2) cout<<cnt;
        cout<<a;
    }
    return 0;
}

延迟的回文数

img


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

string asd(string a) {
    string b=a,qwe;
    reverse(b.begin(),b.end());
    int len=a.length(),c=0;
    for (int i=0;i<len;i++)
    {
        int num=(a[i]-'0'+b[i]-'0')+c;
        c=0;
        if (num>=10)
        {
            c=1;
            num-=10;
        }
        qwe+=char(num+'0');
    }
    if(c==1) qwe+='1';
    reverse(qwe.begin(),qwe.end());
    return qwe;
}
int main() {
    string s;
    cin>>s;
    int d=0;
    while (d<10)
    {
        string t=s;
        reverse(t.begin(),t.end());
        if (t==s)
        {
            cout<<s<<" is a palindromic number.";
            break;
        } 
        else 
        {
            cout<<s<<" + "<<t<<" = "<<asd(s)<<endl;
            s=asd(s);
            d++;
        }
    }
    if (d==10) cout<< "Not found in 10 iterations.";
    return 0;
}

检查密码

img

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

int main()
{
    int n;
    cin>>n;
    getchar();
    for(int i=0;i<n;i++)
    {
        string s;
        getline(cin,s);
        if(s.length()>=6)
        {
            int a=0,b=0,c=0;
            for(int j=0;j<s.length();j++)
            {
                if(s[j]!='.' && !isalnum(s[j])) a=1;
                else if(isalpha(s[j])) b=1;
                else if(isdigit(s[j])) c=1;
            }
            if(a==1) cout<<"Your password is tai luan le."<<endl;
            else if(b==0) cout<<"Your password needs zi mu."<<endl;
            else if(c==0) cout<<"Your password needs shu zi."<<endl;
            else cout<<"Your password is wan mei."<<endl;
        }
        else cout<<"Your password is tai duan le."<<endl;
    } 
    return 0;
}


射击比赛

img


#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
typedef struct{
    int id;
    int len;
}stuInfo;
bool cmp(stuInfo a,stuInfo b)
{
    return a.len<b.len;
}
int main()
{
    int n;
    cin>>n;
    vector<stuInfo> v(n);
    int id,x,y;
    for(int i=0;i<n;i++)
    {
        cin>>id>>x>>y;
        v[i].id=id;
        v[i].len=x*x+y*y;
    }
    sort(v.begin(),v.end(),cmp);
    printf("%04d %04d\n",v[0].id,v[v.size()-1].id);
    return 0;
}

是否存在相等的差

img


#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
    int n,num,time=0;
    cin>>n;
    int asd[n+1];
    for(int i=0;i<n;i++)
    {
        cin>>num;
        if(num>i) asd[i]=num-i-1;
        else asd[i]=i+1-num;
    }
    sort(asd,asd+n,cmp);
    for(int i=0;i<n;i++)
    {
        time++;
        if(asd[i+1]!=asd[i])
        {
            if(time>1) cout<<asd[i]<<" "<<time<<endl;
            time=0;
        }
    }
}

就不告诉你

img


#include <stdio.h>
#include <iostream> 
using namespace std;

int main()
{
    int a,b,s[100];
    cin>>a>>b;
    int c=a*b;
    int k=0,flag=0;
    while(c>0)
    {
        s[++k]=c%10;
        c=c/10;
    }
    for(int i=1;i<=k;i++)
    {
        if(s[i]||flag)
        {
            cout<<s[i];
            flag=1;
        } 
    }
    return 0;
}

有多少不同的值

img


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

int main()
{
    int n;
    cin>>n;
    set<int> s;
    for(int i=1;i<=n;i++) s.insert(i/2+i/3+i/5);
    cout<<s.size();
    return 0;
}

2.12咯,目前PAT只刷到1087(中间还空了几个不会写的),后面再接着刷吧

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

264

社区成员

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

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