洛谷试炼场

 


P1055 ISBN号码

#include<bits/stdc++.h>
using namespace std;
string s;
char e[11]={'0','1','2','3','4','5','6','7','8','9','X'};
int main()
{
    cin>>s;
    int res=0;
    for(int p=0,c=0;p<=10;p++)
        if(s[p]!='-') res+=(s[p]-'0')*(++c), res%=11;
    if(e[res]==s[12]) cout<<"Right"<<endl;
    else cout<<(s.substr(0,12)+e[res])<<endl;
}

P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…

#include<bits/stdc++.h>
using namespace std;
int a,b;
string s;
int main()
{
    cin>>s;
    a=1;
    for(uint32_t i=0;i<s.size();i++) a*=(s[i]-'A'+1), a%=47;
    cin>>s;
    b=1;
    for(uint32_t i=0;i<s.size();i++) b*=(s[i]-'A'+1), b%=47;
    if(a==b) cout<<"GO"<<endl;
    else cout<<"STAY"<<endl;
}

P1308 统计单词数

(我觉得这题输入输出有毛病……跳过吧)


P1553 数字反转(升级版)

#include<bits/stdc++.h>
using namespace std;
string s;
void rev(string& s)
{
    int i=0, j=s.size()-1;
    while(i<j) swap(s[i++],s[j--]);
}
void del(bool f,string& s)
{
    if(f) //后导零
    {
        while(s.size() && s.back()=='0') s.erase(s.size()-1,1);
        if(s.empty()) s="0";
    }
    else //前导零
    {
        while(s.size() && s[0]=='0') s.erase(0,1);
        if(s.empty()) s="0";
    }
}
int main()
{
    cin>>s;
    int p; string a,b;
    if((p=s.find('.'))!=string::npos) //小数
    {
        a=s.substr(0,p), b=s.substr(p+1);
        rev(a), rev(b);
        del(0,a), del(1,b);
        s=a+'.'+b;
    }
    else if((p=s.find('/'))!=string::npos) //分数
    {
        a=s.substr(0,p), b=s.substr(p+1);
        rev(a), rev(b);
        del(0,a), del(0,b);
        s=a+'/'+b;
    }
    else if((p=s.find('%'))!=string::npos) //百分数
    {
        a=s.substr(0,p);
        rev(a), del(0,a);
        s=a+'%';
    }
    else rev(s), del(0,s); //整数
    cout<<s<<endl;
}

P1598 垂直柱状图

#include<bits/stdc++.h>
using namespace std;
string s[10];
int cnt[30];
int main()
{
    for(int i=1;i<=4;i++)
    {
        getline(cin,s[i]);
        for(auto x:s[i]) if(isupper(x)) cnt[x-'A']++;
    }
    int mx=0; for(int i=0;i<26;i++) mx=max(mx,cnt[i]);
    for(int r=mx;r>=1;r--)
    {
        int lim=0; for(int c=0;c<26;c++) if(cnt[c]>=r) lim=c;
        for(int c=0;c<=lim;c++)
        {
            if(c>0) printf(" ");
            if(cnt[c]>=r) printf("*");
            else printf(" ");
        }
        printf("
");
    }
    for(int c=0;c<26;c++)
    {
        if(c>0) printf(" ");
        printf("%c",'A'+c);
    }
}

P1914 小书童——密码

#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int main()
{
    cin>>n>>s;
    for(auto x:s) cout<<(char)('a'+(x-'a'+n)%26);
}
原文地址:https://www.cnblogs.com/dilthey/p/10274020.html