PAT A答案

A1001

#include <iostream>
#include <math.h>
#include <algorithm>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b;
    c=a+b;
    int d=fabs(c);
    string str=to_string(d);
    int k=str.length()%3;
    if(c<0)
        cout<<"-";
       if(k==0)
        k=3;
    for(int i=0;i<str.length();i++)
    {
        while(i<k)
            cout<<str[i++];
        if(str.length()<4)
            break;
       if((str.length()-i)%3==0)
            cout<<",";
       cout<<str[i];
    }
}

A1002

#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main()
{
    int a,b,x,k=0;
    float y;
    map<int,float> mp;
    cin>>a;
    for(int i=0;i<a;i++)
    {
        cin>>x>>y;
        mp[x]+=y;
    }
    cin>>b;
    for(int i=0;i<b;i++)
    {
        cin>>x>>y;
        mp[x]+=y;
    }
    for(auto it=mp.begin();it!=mp.end();it++)
    {
        if(it->second!=0.0)
            k++;
    }
    cout<<k;
    auto it=mp.end();
    do
    {
        --it;
        if(it->second!=0.0)
        printf(" %d %.1f",it->first,it->second);
    }while(it!=mp.begin());
}

A1005

#include <iostream>
using namespace std;
int main()
{
    string str,str1;
    string a[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
    int sum=0;
    getline(cin,str);
    for(int i=0;i<str.length();i++)
        sum+=str[i]-'0';
    str1=to_string(sum);
    for(int i=0;i<str1.length();i++)
    {
        if(i!=0)
            cout<<" ";
        cout<<a[str1[i]-'0'];
    }
}

A1006

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string maxstr,minstr;
    string minstr2,maxstr3;
    string str1,str2,str3;
    cin>>str1>>str2>>str3;
    minstr2=str2;
    maxstr3=str3;
    minstr=maxstr=str1;
    for(int i=1;i<n;i++)
    {
        cin>>str1>>str2>>str3;
        if(str2<minstr2)
            {
                minstr=str1;
                minstr2=str2;
            }
        if(str3>maxstr3)
            {
                maxstr=str1;
                maxstr3=str3;
            }
    }
    cout<<minstr<<" "<<maxstr<<endl;
}

A1008

#include <iostream>
using namespace std;
int main()
{
    int n,k,time=0;
    cin>>n;
    int level=0;
    for(int i=0; i<n; i++)
    {
        cin>>k;
        time+=level>k?5+(level-k)*4:5+(k-level)*6;
        level=k;
    }
    cout<<time;
}

A1009

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
int main()
{
    int a,b,x,k=0;
    float y;
    vector<double> ve1;
    map<int,double> mp;
    map<int,double> mp1;
    cin>>a;
    for(int i=0;i<a;i++)
    {
        cin>>x>>y;
        ve1.push_back(x);
        mp1[ve1[i]]=y;
    }
    cin>>b;
    for(int i=0;i<b;i++)
    {
        cin>>x>>y;
        for(int h=0;h<a;h++)
            mp[ve1[h]+x]+=mp1[ve1[h]]*y;
    }
    for(auto it=mp.begin();it!=mp.end();it++)
    {
        if(it->second!=0.0)
            k++;
    }
    cout<<k;
    auto it=mp.end();
    do
    {
        --it;
        if(it->second!=0.0)
        printf(" %d %.1f",it->first,it->second);
    }while(it!=mp.begin());
}

A1011

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    double w,t,l,m;
    double sum=1;
    string s;
    for(int i=0; i<3; i++)
    {
        cin>>w>>t>>l;
        if(w>t)
        {
            s="W";
            m=w;
        }
        else
        {
            s="T";
                 m=t;
        }
        if(m<=l)
        {
            s="L";
                 m=l;
        }
        if(i!=0)
        cout<<" ";
        cout<<s;
        sum*=m;
    }
    sum=(sum*0.65-1)*2;
    printf(" %.2f",sum);
}

A1023

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    int j=0,k,sum=0;
    string str;
    cin>>str;
    vector<int> ve1;
    vector<int> ve2;
    vector<int> ve3;
    reverse(str.begin(),str.end());
    for(int i=0; i<str.length(); i++)
    {
        ve2.push_back(str[i]);
        k=((str[i]-'0')*2+j)%10;
        ve1.push_back(k);
        ve3.push_back(k);
        j=((str[i]-'0')*2+j)/10;
    }
    if(j>0)
    {
        ve1.push_back(j);
        ve3.push_back(j);
    }
    sort(ve1.begin(),ve1.end());
    sort(ve2.begin(),ve2.end());
    for(int i=0; i<ve1.size(); i++)
    {
        if(ve1[i]==ve2[i]-'0')
            sum++;
    }
    if(sum==ve1.size()&&ve1.size()==ve2.size())
        cout<<"Yes"<<endl;
    else
        cout<<"No"<<endl;
    for(int i=ve3.size()-1; i>=0; i--)
        cout<<ve3[i];
}

A1031

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    string str;
    cin>>str;
    int i=0,maxi=0;
    int a=str.length();
    for(int m=3; m<a; m++)
    {
        for(int i=0; i<=m; i++)
        {
            if(2*i+m==2+a)
            {
                if(i>maxi)
                    maxi=i;
            }
        }
    }
    for(int i=0; i<a; i++)
    {
        if(i<maxi-1)
        {
            cout<<str[i];
            for(int k=0; k<a-2*maxi; k++)
                cout<<" ";
            cout<<str[a-1-i]<<endl;
        }
        if(i>=maxi-1&&i<=a-maxi)
            cout<<str[i];
    }
}

A1035

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n,k=0;
    string str1,str2;
    cin>>n;
    getline(cin,str1);
    vector<string> ve1;
    vector<string> ve2;
    for(int i=0; i<n; i++)
    {
        cin>>str1>>str2;
        int sum=0;
        while(str2.find('l')!=str2.npos)
        {
            int a=str2.find('l');
            str2[a]='L';
            sum++;
        }
        while(str2.find('1')!=str2.npos)
        {
            int a=str2.find('1');
            str2[a]='@';
            sum++;
        }
        while(str2.find('0')!=str2.npos)
        {
            int a=str2.find('0');
            str2[a]='%';
            sum++;
        }
        while(str2.find('O')!=str2.npos)
        {
            int a=str2.find('O');
            str2[a]='o';
            sum++;
        }
        if(sum>0)
        {
            ve1.push_back(str1);
            ve2.push_back(str2);
            k++;
        }
    }
    if(k!=0)
        cout<<k<<endl;
    for(int i=0; i<k; i++)
        cout<<ve1[i]<<" "<<ve2[i]<<endl;
    if(k==0&&n==1)
        cout<<"There is 1 account and no account is modified"<<endl;
    if(k==0&&n>1)
        cout<<"There are "<<n<<" accounts and no account is modified"<<endl;
}

A1036

#include <iostream>
using namespace std;
int main()
{
    int n,grade,mingrade1=100,maxgrade2=0;
    string name,id,gender;
    string minname1,minid1,maxname2,maxid2;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>name>>gender>>id>>grade;
        if(gender=="M")
        {
            if(grade<mingrade1)
            {
                mingrade1=grade;
                minid1=id;
                minname1=name;
            }
        }
        if(gender=="F")
        {
            if(grade>maxgrade2)
            {
                maxgrade2=grade;
                maxid2=id;
                maxname2=name;
            }
        }
    }
    if(maxgrade2>0)
        cout<<maxname2<<" "<<maxid2<<endl;
    else
        cout<<"Absent"<<endl;
    if(mingrade1<100)
        cout<<minname1<<" "<<minid1<<endl;
    else
        cout<<"Absent"<<endl;
    if(maxgrade2>0&&mingrade1<100)
        cout<<maxgrade2-mingrade1;
    else
        cout<<"NA";
}

A1037

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int y;
    string str;
    cout<<"#";
    for(int i=0; i<3; i++)
    {
        cin>>y;
        str="";
        do
        {
            if(y%13>=0&&y%13<=9)
            str+=y%13+'0';
            else
             str+=y%13+'A'-10;
            y=y/13;
        }
        while(y!=0);
        reverse(str.begin(),str.end());
        str=str.insert(0,2-str.length(),'0');
        cout<<str;
    }
}

A1041

#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main()
{
    int n,m;
    cin>>n;
    map<int,int>mp;
    vector<int>ve;
    for(int i=0;i<n;i++)
    {
        cin>>m;
        ve.push_back(m);
        mp[m]++;
    }
        for(int i=0;i<ve.size();i++)
        {
            if(mp[ve[i]]==1)
            {
                cout<<ve[i];
                break;
            }
            if(i==ve.size()-1&&mp[ve[i]]!=1)
                cout<<"None";
        }
}

A1050

#include <iostream>
using namespace std;
int main()
{
   string str1,str2;
   getline(cin,str1);
   getline(cin,str2);
   for(int i=0;i<str1.length();i++)
   {
       if(str2.find(str1[i])==str2.npos)
        cout<<str1[i];
   }
}

A1061

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    string str1,str2,str3,str4;
    char a[2];
    int count=0,pos;
    cin>>str1;
    cin>>str2;
    cin>>str3;
    cin>>str4;
    int m;
    for(int i=0; i<60; i++)
    {
        if(str1[i]==str2[i]&&(str1[i]>='A'&&str1[i]<='G'))//注意范围
        {
            a[0]=str1[i];
            pos=i;
            break;
        }
    }
    for(int i=pos+1; i<60; i++)
     {
         if(str1[i]==str2[i]&&((str1[i]>='0'&&str1[i]<='9')||(str1[i]>='A'&&str1[i]<='N')))
           {
               a[1]=str1[i];
               break;
           }
     }
    for(int i=0; i<60; i++)
    {
        if(str3[i]==str4[i]&&((str3[i]>='A'&&str3[i]<='Z')||(str3[i]>='a'&&str3[i]<='z')))
        {
            pos=i;
            break;
        }
    }
    string days[7]= {"MON","TUE","WED","THU","FRI","SAT","SUN"};
    cout<<days[a[0]-'A']<<" ";
    if(a[1]>='0'&&a[1]<='9')
       m=a[1]-'0';
    else
        m=a[1]-'A'+10;
    printf("%02d:%02d",m,pos);
}

A1070

#include <iostream>//看了一下思路,是一个比较巧妙的想法,计算每个的单价
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
struct mc
{
    double store;
    double price;
    double uniprice;
} var[1000];
bool cmp(mc a,mc b)
{
    if(a.uniprice>b.uniprice)//小于是从大到小,大于是从小到大
        return true;
    else
        return false;
}
int main()
{
    int n,d;
    double sum1=0,sum2=0,sum3=0;//一个是价格总,一个是货物总,一个是保留上次的货物量
    vector <mc> ve;
    cin>>n>>d;
    for(int i=0; i<n; i++)
        cin>>var[i].store;
    for(int i=0; i<n; i++)
        cin>>var[i].price;
    for(int i=0; i<n; i++)
    {
        var[i].uniprice=var[i].price/var[i].store;
        ve.push_back(var[i]);
    }
    sort(ve.begin(),ve.end(),cmp);
    for(int i=0; i<ve.size(); i++)
    {
        sum2+=ve[i].store;
        if(sum2<d)
            sum1+=ve[i].store*ve[i].uniprice;
        else
        {
            sum1+=(d-sum3)*ve[i].uniprice;
            break;
        }
        sum3=sum2;
    }
    cout<<fixed<<setprecision(2)<<sum1<<endl;
}

A1073

#include <iostream>
#include <map>
#include <math.h>
using namespace std;
int main()
{
    string inte1,inte2,inte3;
    string a,b;
    string str1;
    cin>>str1;
    int pos=str1.find('E');
    int n=str1.length();
    //a决定第一个是否输出符号,inte3决定是0.还是向右移动
    a=str1.substr(0,1);
    inte1=str1.substr(1,1);
    inte2=str1.substr(3,pos-3);
    inte3=str1.substr(pos+2,n-2-pos);
    b=str1.substr(pos+1,1);
    string str=inte2;
    int c=stoi(inte3);
    if(a=="-")
        cout<<a;
    if(b=="-")
    {
        cout<<"0.";
        for(int i=1; i<c; i++)
            cout<<"0";
        cout<<inte1<<inte2;
    }
    else
    {
        //如果在inte2的位数小于inte3的情况下,正常输出补0就好
        //如果位数大于inte3,那么还要加入小数点再进行输出
        if(str.length()<=c)
        {
            cout<<inte1<<inte2;
            for(int i=str.length(); i<c; i++)
                cout<<"0";
        }
        else
        {
            cout<<inte1;
            for(int i=0; i<c; i++)
                cout<<str[i];
            cout<<".";
            for(int i=c; i<str.length(); i++)
                cout<<str[i];
        }
    }
}

A1077

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    int n,pos=-1;
    string str1;
    cin>>n;
    getline(cin,str1);
    vector<string>ve;
    for(int i=0;i<n;i++)
    {
        getline(cin,str1);
        reverse(str1.begin(),str1.end());
        ve.push_back(str1);
    }
   for(int i=0;i<ve[0].length();i++)
    {
        int sum=0;
        for(int k=0;k<n;k++)
        {
            if(ve[k][i]==ve[0][i])
                sum++;
        }
        if(sum!=n)
        {
            pos=i;
            break;
        }
        if(sum==n&&i==(ve[0].length()-1))
            pos=i+1;
    }
    for(int i=pos-1;i>=0;i--)
        cout<<ve[0][i];
    if(pos==0)
        cout<<"nai";
}

A1083

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct people
{
    string name;
    string id;
    int grade;
};
bool cmp(people a,people b)
{
    return a.grade>b.grade;
}
int main()
{
    int n,sum=0;
    cin>>n;
    int a,b;
    vector<people> v(n);
    for(int i=0;i<n;i++)
    {
      cin>>v[i].name>>v[i].id>>v[i].grade;
    }
    sort(v.begin(),v.end(),cmp);
    cin>>a>>b;
    for(int i=0;i<n;i++)
    {
        if(v[i].grade>=a&&v[i].grade<=b)
            {
                cout<<v[i].name<<" "<<v[i].id<<endl;
                sum++;
            }
    }
    if(sum==0)
        cout<<"NONE";
}

A1084

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    string str1,str2,ans;
    int pos1=0,pos2=0;
    cin>>str1>>str2;
    transform(str1.begin(),str1.end(),str1.begin(),::toupper);
    transform(str2.begin(),str2.end(),str2.begin(),::toupper);
    for(int i=0;i<str1.length();i++)
    {
        if((str2.find(str1[i])==str2.npos)&&(ans.find(str1[i])==ans.npos))
            ans+=str1[i];
    }
    cout<<ans;
}

A1085

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    long long n,p,m,ans=0;
    cin>>n>>p;
    vector <int> ve;
    for(int i=0; i<n; i++)
    {
        cin>>m;
        ve.push_back(m);
         }
    sort(ve.begin(),ve.end());
    for(int i=0; i<n; i++)
    {

        for(int k=i+ans; k<n; k++)
        {

            if(ve[i]*p>=ve[k])
            {
                if(k-i+1>=ans)
                    ans=k-i+1;
            }
            else
                break;
        }
    }
    cout<<ans;
}

A1088

#include <iostream>
#include <cmath>
using namespace std;
long long a, b, c, d;
long long gcd(long long t1, long long t2) {
    return t2 == 0 ? t1 : gcd(t2, t1 % t2);
}
void func(long long m, long long n) {
    if (m * n == 0) {
        printf("%s", n == 0 ? "Inf" : "0");
        return ;
    }
    bool flag = ((m < 0 && n > 0) || (m > 0 && n < 0));
    m = abs(m); n = abs(n);
    long long x = m / n;
    printf("%s", flag ? "(-" : "");
    if (x != 0) printf("%lld", x);
    if (m % n == 0) {
        if(flag) printf(")");
        return ;
    }
    if (x != 0) printf(" ");
    m = m - x * n;
    long long t = gcd(m, n);
    m = m / t; n = n / t;
    printf("%lld/%lld%s", m, n, flag ? ")" : "");
}
int main() {
    scanf("%lld/%lld %lld/%lld", &a, &b, &c, &d);
    func(a, b); printf(" + "); func(c, d); printf(" = "); func(a * d + b * c, b * d); printf("\n");
    func(a, b); printf(" - "); func(c, d); printf(" = "); func(a * d - b * c, b * d); printf("\n");
    func(a, b); printf(" * "); func(c, d); printf(" = "); func(a * c, b * d); printf("\n");
    func(a, b); printf(" / "); func(c, d); printf(" = "); func(a * d, b * c);
    return 0;
}

A1089

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
int main()
{
   int n,pos,h,k;
   cin>>n;
   vector<int>v1;
   vector<int>v2;
   vector<int>v3;
   for(int i=0;i<n;i++)
   {
       cin>>h;
       v1.push_back(h);
   }
    for(int i=0;i<n;i++)
   {
       cin>>h;
       v2.push_back(h);
   }
     for(int i=0;i<n;i++)
   {
       if(v2[i]>v2[i+1])
       {
           pos=i+1;
           k=pos;
           break;
       }
   }
   while(v1[pos]==v2[pos]&&pos<n)
       pos++;
   if(pos==n)
    {
        cout<<"Insertion Sort"<<endl;
        sort(v1.begin(),v1.begin()+k+1);
    }
   else
    {
        cout<<"Merge Sort"<<endl;
        int flag=1,k=1;
        while(flag)
        {
            flag=0;
            for(int i=0;i<n;i++)
                {
                if(v1[i]!=v2[i])
                flag=1;
                }
                k=k*2;
            for(int i=0;i<n/k;i++)
                sort(v1.begin()+i*k,v1.begin()+(i+1)*k);
            sort(v1.begin()+n/k*k,v1.end());
        }
    }
            for(int i=0;i<v1.size();i++)
        {
            if(i!=0)
                cout<<" ";
            cout<<v1[i];
        }
}

A1092

#include <iostream>
using namespace std;
int main()
{
    string str1,str2;
    int n,m,sum=0;
    getline(cin,str1);
    getline(cin,str2);
    for(int i=0;i<str2.length();i++)
    {
        n=str1.length();
        if(str1.find(str2[i])!=str1.npos)
        {
            m=str1.find(str2[i]);
            str1=str1.substr(0,m)+str1.substr(m+1,n-m-1);
        }
        else
            sum++;
    }
    if(sum>0)
        cout<<"No "<<sum;
    else
        cout<<"Yes "<<str1.length();
}

A1093

#include <iostream>
using namespace std;
int main()
{
    string str;
    getline(cin,str);
    int sumT=0,sumP=0;
    long long sum=0;
    for(int i=0;i<str.length();i++)
    {
        if(str[i]=='T')
           sumT++;
    }
    for(int i=0;i<str.length();i++)
    {
        if(str[i]!='A')
        {
            if(str[i]=='P')
                sumP++;
            else
                sumT--;
        }
        else
            sum+=sumP*sumT;

    }
   cout<<sum%1000000007;
}

A1100

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n,pos1=0,pos2=0;
    cin>>n;
    getchar();
    string st,str1,str2;
    vector <string> ve;
    string a[13]= {"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
    string b[12]= {"tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
    for(int i=0; i<n; i++)
    {
        getline(cin,st);
        ve.push_back(st);
    }
    for(int i=0; i<ve.size(); i++)
    {
        if(ve[i][0]>='0'&&ve[i][0]<='9')
        {
            int ot = stoi(ve[i]);
            if(ot%13==0&&ot/13!=0)
                cout<<b[(ot/13)-1]<<endl;
            if(ot%13!=0&&ot/13!=0)
                cout<<b[(ot/13)-1]<<" "<<a[ot%13]<<endl;
            if(ot/13==0)
            cout<<a[ot%13]<<endl;
        }
        else
        {
            if(ve[i].length()>=6)
            {
                str1=ve[i].substr(0,3);
                for(int m=0; m<12; m++)
                {
                    if(b[m]==str1)
                        pos1=m;
                }
                if(ve[i].length()==7)
                    str2=ve[i].substr(4,3);
                else
                    str2=ve[i].substr(4,4);
                for(int n=0; n<13; n++)
                {
                    if(a[n]==str2)
                        pos2=n;
                }
                cout<<(pos1+1)*13+pos2<<endl;
            }
            else
            {
                for(int k=0; k<12; k++)
                {
                    if(b[k]==ve[i])
                        cout<<(k+1)*13<<endl;
                }
                for(int k=0; k<13; k++)
                {
                    if(a[k]==ve[i])
                        cout<<k<<endl;
                }
            }
        }
    }
}

A1101

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    vector<int> ve1;
    vector<int> ve2;
    vector<int> ve3;
    int n,m,maxi=0,sum=0;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>m;
        ve1.push_back(m);
        ve2.push_back(m);
    }
    sort(ve1.begin(),ve1.end());
    for(int i=0; i<n; i++)
    {
        if(ve1[i]==ve2[i]&&ve2[i]>maxi)
        {
            sum++;
            ve3.push_back(ve2[i]);
        }
        if(ve2[i]>maxi)
            maxi=ve2[i];
    }
    cout<<sum<<endl;
    for(int i=0;i<ve3.size();i++)
    {
        if(i!=0)
            cout<<" ";
            cout<<ve3[i];
    }
    cout<<endl;
}

A1104

#include <cstdio>
int main(){
    int n;  
    double v,ans = 0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%lf", &v);
        ans+=v*i*(n + 1 - i);
    }
    printf("%.2f\n",ans);
    return 0;
}

A1105

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
   int N,i,m,n,t=0,h;
   cin>>N;
   string str;
   vector<int> v;
   vector<int>a(N);
 
   for(int i=0;i<N;i++)
   {
       cin>>h;
       v.push_back(h);
   }
   sort(v.begin(),v.end(),cmp);
   for(int i=0;i<v.size();i++)
    a[i]=v[i];
   n=sqrt(N);
   while(N%n!=0)
   {
       n--;
   }
    m=N/n;
 int level = m / 2 + m % 2;
  vector<vector<int>>b(m,vector<int>(n));
    for (int i = 0; i < level; i++) {
        for (int j = i; j <= n - 1 - i && t <= N - 1; j++)
                b[i][j] = a[t++];
        for (int j = i + 1; j <= m - 2 - i && t <= N - 1; j++)
                b[j][n - 1 - i] = a[t++];
        for (int j = n - i - 1; j >= i && t <= N - 1; j--)
                b[m - 1 - i][j] = a[t++];
        for (int j = m - 2 - i; j >= i + 1 && t <= N - 1; j--)
                b[j][i] = a[t++];
    }
    for(int i=0;i<m;i++)
    {
        for(int k=0;k<n;k++)
        {
            if(k!=0)
                cout<<" ";
            cout<<b[i][k];
        }
        cout<<"\n";
    }
}

A1108

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <string.h>
using namespace std;
int main()
{
    int n;
    double c,sum1=0,sum2=0;
    char a[50],b[50];
    cin>>n;
    for(int i=0; i<n; i++)
    {
        scanf("%s",a);
        sscanf(a,"%lf",&c);
        sprintf(b,"%.2f",c);
        int flag=0;
        for(int h=0; h<strlen(a); h++)
        {
            if(a[h]!=b[h])
                flag=1;
        }
        if((c>=(-1000))&&(c<=1000)&&(flag==0))
        {
            sum1+=c;
            sum2++;
            continue;
        }
        else
            cout << "ERROR: " << a << " is not a legal number" << endl;
    }
    if(sum2==0)
        cout<<"The average of 0 numbers is Undefined";//1
    if(sum2==1)
        cout<<"The average of 1 number is "<<fixed<<setprecision(2)<<sum1/sum2;//2
    if(sum2>1)
        cout<<"The average of "<<sum2<<" numbers is "<<fixed<<setprecision(2)<<sum1/sum2;//0 3
}


A1109

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
struct people
{
    string name;
    int height;
} a[10000];
bool cmp(people a,people b)
{
    if(a.height!=b.height)
        return a.height>b.height;
    if(a.name!=b.name)
        return a.name<b.name;
}
int main()
{
    int n,k,m;
    cin>>n>>k;
    vector<people> v;
    for(int i=0; i<n; i++)
    {
        cin>>a[i].name>>a[i].height;
        v.push_back(a[i]);
    }
    sort(v.begin(),v.end(),cmp);
    int t = 0, row = k;
    while(row)
    {
        if(row == k)
            m = n - n / k * (k - 1);
        else
            m = n / k;
        vector<string> ans(m);
        ans[m / 2] = v[t].name;//中间的人 t=0
        // 左边一列
        int j = m / 2 - 1;
        for(int i = t + 1; i < t + m; i = i + 2)//单数
            ans[j--] = v[i].name;
        // 右边一列
        j = m / 2 + 1;
        for(int i = t + 2; i < t + m; i = i + 2)//双数
            ans[j++] = v[i].name;
        // 输出当前排
        cout << ans[0];
        for(int i = 1; i < m; i++)
            cout << " " << ans[i];
        cout << endl;
        t = t + m;
        row--;
    }
}

A1116

#include <iostream>
#include <vector>
using namespace std;
bool isPrime(int number)
{
    for(int i=2; i*i<=number; i++)
        if (number%i==0)
            return false;
    return true;
}
 void fuc(int m,int a[],int b[])
{
 if(a[m]==0)
            cout<<": Are you kidding?"<<endl;
        else
        {
            if(b[m]>0)
                cout<<": Checked"<<endl;
            else
            {
                b[m]=1;
                if(a[m]==1)
                    cout<<": Mystery Award"<<endl;
                else if(isPrime(a[m]))
                    cout<<": Minion"<<endl;
                else
                    cout<<": Chocolate"<<endl;
            }
        }
}
int main()
{
    int n,m;
    cin>>n;
    int a[10001]= {0};
    int b[10001]= {0};
    vector <int> ve;
    for(int i=0; i<n; i++)
    {
        cin>>m;
        a[m]=i+1;
    }
    int k;
    cin>>k;
    for(int i=0; i<k; i++)
        {
            cin>>m;
            ve.push_back(m);
        }
  for(int i=0;i<k;i++)
  {
      printf("%04d",ve[i]);
       fuc(ve[i],a,b);
  }
}


A1117

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    int n,m,pos=0;
    cin>>n;
    vector <int> ve;
    for(int i=0; i<n; i++)
    {
        cin>>m;
        ve.push_back(m);
    }
   sort(ve.begin(),ve.end());
    reverse(ve.begin(),ve.end());
    for(int i=0; i<n; i++)
    {
        if(ve[i]>i+1)
        {
                pos=i+1;
        }
    }
    cout<<pos;
}





A1121

#include <iostream>
#include <set>
#include <vector>
using namespace std;
int main()
{
    int n,m;
    cin>>n;
    int x,y,k;
    set<int> s;
    int a[100000]= {0};
    int b[100000]= {0};
    vector<int> ve;
    for(int i=0; i<n; i++)
    {
        cin>>x>>y;
        a[x]=y;
        a[y]=x;
    }
    cin>>m;
    for(int i=0; i<m; i++)
    {
        cin>>x;
        b[x]=1;
        ve.push_back(x);
    }
    for(int i=0; i<m; i++)
    {
        k=ve[i];
        if(b[a[k]]!=1)
            s.insert(k);
    }
    cout<<s.size()<<endl;
    for(auto it = s.begin(); it != s.end(); it++)
    {
        if(it!=s.begin())
            cout<<" ";
        printf("%05d",*it);
    }
}



A1124

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
int main()
{
    int m,n,s;
    cin>>m>>n>>s;
    string str;
    vector<string> ve;
    vector<string> ve2;
    set<string>s1 ;
    for(int i=0; i<m; i++)
    {
        cin>>str;
        ve.push_back(str);
    }
    if(s>m)
        cout<<"Keep going...";
    else
    {
        for(int i=s-1; i<m; i+=n)
        {
            if(s1.find(ve[i])==s1.end())
            {
                cout<<ve[i]<<endl;
                s1.insert(ve[i]);
                ve2.push_back(ve[i]);
            }
            else
            {
                while(s1.find(ve[i])!=s1.end())
                    i++;
             cout<<ve[i]<<endl;
            }
        }
    }
}

A1125

#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
bool cmp(int a,int b)
{
    if(a<b)
        return true;
    else
        return false;
}
using namespace std;
int main()
{
    int n,m;
    double sum=0;
    cin>>n;
    vector <int> ve;
    for(int i=0; i<n; i++)
    {
        cin>>m;
        ve.push_back(m);
    }
    sort(ve.begin(),ve.end(),cmp);
    sum=ve[0];
    for(int i=1; i<n; i++)
        sum=(sum+ve[i])/2;
    cout<<int(sum);
}

A1133

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n,k,sum=0;
    int beginad;
    cin>>beginad>>n>>k;
    int address;
    int data[100000];
    int next[100000];
    int a[100000];
    vector<int>ve1;
    vector<int>ve2;
    vector<int>ve3;
    vector<int>ve4;
    vector<int>ve5;
 for(int i=0; i<n; i++)
    {
        cin>>address;
        cin>>data[address]>>next[address];//a[i].address>>a[i].data>>a[i].next
    }
    for(int i=0; i<n; i++)
    {
        if(beginad!=-1)
        {
            a[sum++]=beginad;
            beginad=next[beginad];
        }
    }
    for(int i=0; i<sum; i++)
    {
        if(data[a[i]]<0)
            ve1.push_back(a[i]);
        else if(data[a[i]]>k)
            ve3.push_back(a[i]);
        else
            ve2.push_back(a[i]);
    }
        for(int m=0;m<ve1.size();m++)
            ve4.push_back(ve1[m]);
        for(int m=0;m<ve2.size();m++)
           ve4.push_back(ve2[m]);
        for(int m=0;m<ve3.size();m++)
            ve4.push_back(ve3[m]);

    for(int i=0;i<sum;i++)
    {
        printf("%05d %d ",ve4[i],data[ve4[i]]);
        if(i!=sum-1)
        printf("%05d\n",ve4[i+1]);
        else
        cout<<-1<<endl;
    }
}

A1136

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    string str1,str2,str3,str4;
    int x=0,y=0;
    cin>>str1;
    str2=str1;
    reverse(str1.begin(),str1.end());
    for(int k=0; k<11; k++)
    {
        x=y=0;
        str3="";
        if(str1==str2)
        {
            cout<<str1<<" is a palindromic number.";
            break;
        }
        if(k==10)
        {
            cout<<"Not found in 10 iterations.";
            break;
        }
        cout<<str2<<" + "<<str1<<" = ";
        for(int i=0; i<str1.length(); i++)
        {
            x=(str1[i]+str2[i]+y-'0'-'0')%10;
            y=(str1[i]+str2[i]+y-'0'-'0')/10;
            str3+='0'+x;
        }
        if(y>0)
            str3+='0'+y;
        str1=str3;
        reverse(str3.begin(),str3.end());
        str2=str3;
        cout<<str2<<endl;
    }
}


A1137

#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
struct node {
    string name;
    int gp, gm, gf, g;
};
bool cmp(node a, node b) {
    return a.g != b.g ? a.g > b.g : a.name < b.name;
}
map<string, int> idx;
int main() {
    int p, m, n, score, cnt = 1;
    cin >> p >> m >> n;
    vector<node> v, ans;
    string s;
    for (int i = 0; i < p; i++) {
        cin >> s >> score;
        if (score >= 200) {
            v.push_back(node{s, score, -1, -1, 0});
            idx[s] = cnt++;
        }
    }
    for (int i = 0; i < m; i++) {
        cin >> s >> score;
        if (idx[s] != 0)
            v[idx[s] - 1].gm = score;//只存大于200的人的编程成绩
    }
    for (int i = 0; i < n; i++) {
        cin >> s >> score;
        if (idx[s] != 0) {
            int temp = idx[s] - 1;//只存大于200的人的期末综合成绩
            v[temp].gf = v[temp].g = score;
            if (v[temp].gm > v[temp].gf)//若不大则不用更新
                v[temp].g = int(v[temp].gm * 0.4 + v[temp].gf * 0.6 + 0.5);//不用使用round
        }
    }
    for (int i = 0; i < v.size(); i++)
        if (v[i].g >= 60) 
            ans.push_back(v[i]);
    sort(ans.begin(), ans.end(), cmp);
    for (int i = 0; i < ans.size(); i++)
        printf("%s %d %d %d %d\n", ans[i].name.c_str(), ans[i].gp, ans[i].gm, ans[i].gf, ans[i].g);
    return 0;
}

A1140

#include <iostream>
using namespace std;
int main()
{
    string s;
    int n, j;
    cin >> s >> n;
    for (int cnt = 1; cnt < n; cnt++)
    {
        string t;
        for (int i = 0; i < s.length(); i = j)
        {//从上次不同的地方开始
            for ( j = i ; j < s.length() && s[j] == s[i]; j++)
                ;//一直对比到不同的位置
                 t += to_string((s[i] - '0') * 10 + j - i);//每次都是临时标记一次
                 //j-i是计算相同的个数 to_string((s[i] - '0') * 10是相同的数字
        }
        s = t;
    }
    cout << s;
}

A1141

#include <iostream>
#include <vector>
#include <map>
#include <math.h>
#include <algorithm>
#include <set>
using namespace std;
struct ph1
{
    string name;
    int ren,sumgrade;
};
bool cmp(ph1 a,ph1 b)
{
    if(a.sumgrade!=b.sumgrade)
        return a.sumgrade>b.sumgrade;
    else if(a.ren!=b.ren)
     return a.ren<b.ren;
    else
        return a.name<b.name;
}
int main()
{
    int n,grade,pos;
    string name,id;
    cin>>n;
    vector<ph1> ve2;
    set<string>s;
    map<string,double> mp;
    map<string,int> mp1;
    for(int i=0; i<n; i++)
    {
        cin>>id>>grade>>name;
        transform(name.begin(),name.end(),name.begin(),::tolower);
        mp1[name]++;
        if(id[0]=='T')
            mp[name]+=grade*1.5;
        if(id[0]=='B')
            mp[name]+=grade/1.5;
        if(id[0]=='A')
            mp[name]+=grade;
    }

for (auto it = mp1.begin(); it != mp1.end(); it++)
ve2.push_back(ph1{it->first, mp1[it->first],(int)mp[it->first]});
sort(ve2.begin(),ve2.end(),cmp);
cout<<ve2.size()<<endl;
    for(int i=0; i<ve2.size(); i++)
    {
        if(i==0)
            pos=1;
        if(ve2[i-1].sumgrade!=ve2[i].sumgrade)
            pos=i+1;
            cout<<pos;
        cout<<" "<<ve2[i].name<<" "<<ve2[i].sumgrade<<" "<<ve2[i].ren<<endl;
    }
}

A1148

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
    int n;
    cin >> n;
    vector<int> v(n+1);
    for (int i = 1; i <= n; i++) cin >> v[i];
    for (int i = 1; i <= n; i++) {
        for (int j = i + 1; j <= n; j++) {
            vector<int> lie, a(n + 1, 1);
            a[i] = a[j] = -1;
            for (int k = 1; k <= n; k++)
                if (v[k] * a[abs(v[k])] < 0) lie.push_back(k);
            if (lie.size() == 2 && a[lie[0]] + a[lie[1]] == 0) {
                cout << i << " " << j;
                return 0;
            }
        }
    }
    cout << "No Solution";
    return 0;
}

A1149

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
int main()
{
    int n,m,x,y;
    cin>>n>>m;
    map<int,vector<int> > mp;
     vector<int> v;
    for(int i=0; i<n; i++)
    {
        cin>>x>>y;
        mp[x].push_back(y);
        mp[y].push_back(x);
    }
    for(int i=0; i<m; i++)
    {
        v.clear();
        int b=0;
        int pos=0;
        int a[100000]= {0};
        cin>>x;
        for(int k=0; k<x; k++)
        {
            cin>>y;
            a[y]=1;
            v.push_back(y);
        }
        for(int h=0; h<v.size(); h++)
        {
            for(int k=0; k<mp[v[h]].size(); k++)
            {
                b=a[mp[v[h]][k]];
                if(b==1)
                    pos=1;
            }
        }
        if(pos==1)
            cout<<"No"<<endl;
        if(pos==0)
            cout<<"Yes"<<endl;
    }

}

A1152

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
bool isPrime(long long number)
{
    for(long long i=2; i*i<=number; i++)
        if (number%i==0)
            return false;
    return true;
}
int main()
{
    int l,k;
    long long b;
    cin>>l>>k;
    string str,a;
    cin>>str;
    for(int i=0; i<l+1; i++)
    {
        if(i+k>l)
        {
            cout<<"404";
            break;
        }
        if(i+k<=l)
        {
            string a=str.substr(i,k);
            b=stoi(a);
            if(isPrime(b))
            {
                cout<<a;
                break;
            }
        }
    }
}




A1153

#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
struct node
{
    string t;
    int value;
};
bool cmp(const node &a, const node &b)
{
    return a.value != b.value ? a.value > b.value : a.t < b.t;
}
int main()
{
    int n, k, num;
    string s;
    cin >> n >> k;
    vector<node> v(n);
    for (int i = 0; i < n; i++)
        cin >> v[i].t >> v[i].value;
    for (int i = 1; i <= k; i++)
    {
        cin >> num >> s;
        cout<<"Case "<<i<<": "<<num<<" "<<s<<endl;
        vector<node> ans;
        int cnt = 0, sum = 0;
        if (num == 1)
        {
            for (int j = 0; j < n; j++)
                if (v[j].t[0] == s[0])
                    ans.push_back(v[j]);
        }
        else if (num == 2)
        {
            for (int j = 0; j < n; j++)
            {
                if (v[j].t.substr(1, 3) == s)
                {
                    cnt++;
                    sum += v[j].value;
                }
            }
            if (cnt != 0)
                printf("%d %d\n", cnt, sum);
        }
        else if (num == 3)
        {
            unordered_map<string, int> m;
            for (int j = 0; j < n; j++)
                if (v[j].t.substr(4, 6) == s)
                    m[v[j].t.substr(1, 3)]++;
            for (auto it : m)
                ans.push_back({it.first, it.second});
        }
        sort(ans.begin(), ans.end(),cmp);
        for (int j = 0; j < ans.size(); j++)
            printf("%s %d\n", ans[j].t.c_str(), ans[j].value);
        if (((num == 1 || num == 3) && ans.size() == 0) || (num == 2 && cnt == 0))
            printf("NA\n");
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值