小王子

聆听小王子,守望成长,静待花开

小王

题目描述

国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。 其中 11 分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。 华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白 11 分制和 21 分制对选手的 不同影响。 在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。 华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在 11 分制和 21 分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中 W 表示华华获得一分,L 表示华华对手获得一分): WWWWWWWWWWWWWWWWWWWWWWLW
在 11 分制下,此时比赛的结果是华华第一局 11 比 0 获胜,第二局 11 比 0 获胜,正在进行第 三局,当前比分 1 比 1。
而在 21 分制下,此时比赛结果是华华第一局 21 比 0 获胜,正在进行第二局,比分 2 比 1。 如果一局比赛刚开始,则此时比分为 0 比 0。
你的程序就是要对于一系列比赛信息的输入(WL 形式),输出正确的结果。

输入格式

每个输入文件包含若干行字符串(每行至多 20 个字母),字符串由大写的 W、L 和 E 组成。 其中 E 表示比赛信息结束,程序应该忽略 E 之后的所有内容。

输出格式

输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。 其中第一部分是 11 分制下的结果,第二部分是 21 分制下的结果,两部分之间由一个空行分隔。

输入样例

WWWWWWWWWWWWWWWWWWWW
WWLWE

输出样例

11:0
11:0
1:1

21:0
2:1

题解

cpp

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
void work(string s,int k)
{
    int a = 0,b = 0;
    for (int i = 0;i < s.size();i++) 
    { 
        if(s[i] == 'W') a++; 
        else b++; 
        if (max(a,b) >= k && abs(a - b) >= 2)
        {
            cout << a << ":" << b << endl;
            a = 0,b = 0;
        }
    }
    cout << a << ":" << b << endl; 
} 
int main() 
{ 
    string s; char c; while(cin >> c,c != 'E') s+=c;
    work(s,11);
    cout << endl;
    work(s,21);
    return 0;
}
3年前 (04月11日)
小王

题目描述

每一本正式出版的图书都有一个 ISBN 号码与之对应。
ISBN 码包括 9 位数字、1 位识别码和 3 位分隔符,其规定格式如 x-xxx-xxxxx-x,其中符号 – 是 分隔符(键盘上的减号),最后一位是识别码,例如 0-670-82162-4 就是一个标准的 ISBN 码。 ISBN 码的首位数字表示书籍的出版语言,例如 0 代表英语;第一个分隔符 – 之后的三位数字代表 出版社,例如 670 代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一 位为识别码。
识别码的计算方法如下:
首位数字乘以 1 加上次位数字乘以 2……以此类推,用所得的结果 mod11,所得的余数即为识别码, 如果余数为 10,则识别码为大写字母 X。
例如 ISBN 号码 0-670-82162-4 中的识别码 4 是这样得到的:对 067082162 这 9 个数字,从 左至右,分别乘以 1,2,…,9,再求和,即 0×1+6×2+……+2×9=158,然后取 158mod11 的结果 4 作 为识别码。
编写程序判断输入的 ISBN 号码中识别码是否正确,如果正确,则仅输出 Right;如果错误,则输 出是正确的 ISBN 号码。

输入格式

输入只有一行,是一个字符序列,表示一本书的 ISBN 号码(保证输入符合 ISBN 号码的格式要求)。

输出格式

输出一行,假如输入的 ISBN 号码的识别码正确,那么输出 Right,否则,按照规定的格式,输出 正确的 ISBN 号码(包括分隔符 -)。

样例输入 #1

0-670-82162-4

样例输入 #2

0-670-82162-0

样例输出 #1

Right

样例输出 #2

0-670-82162-4

题解

cpp

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    string s;
    int j = 1,x = 0;
    cin >> s;
    for (int i = 0;i < s.size() - 1;i++)
    {
        if (s[i] != '-')
        {
            x += (s[i] - '0') * j;
            j++;
        }
    }
    x %= 11;
    char c = 'X';
    if (x < 10)
        c = x + '0';
    if (s[s.size() - 1] == c)
        cout << "Right";
    else
    {
        s[s.size() - 1] = c;
        cout << s;
    }
    return 0;
}
3年前 (04月11日)
小王

题目描述

凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?
注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。
统计标题字符数时,空格和换行符不计算在内。

输入格式

输入文件只有一行,一个字符串 s。
输出格式 输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。 数据范围
规定 |s| 表示字符串 s 的长度(即字符串中的字符和空格数)。 1≤|s|≤5,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。

样例输入 #1

123

样例输入 #2

Ca 45

样例输出 #1

3

样例输出 #2

4

题解

cpp

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
using namespace std;
int main()
{
    string s;
    int a = 0;
    getline(cin,s);
    for (int i = 0;i < s.size();i++)
    {
        if (s[i] != ' ')
            a++;
    }
    cout << a;
    return 0;
}
3年前 (04月11日)
小王

题目描述

输入一个句子(一行),将句子中的每一个单词翻转后输出。

输入描述

只有一行,为一个字符串,不超过 500 个字符。单词之间以空格隔开。

输出描述

翻转每一个单词后的字符串

样例输入

hello world

样例输出

olleh dlrow

题解

cpp

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    string s;
    int n = 0;
    getline(cin,s);
    for (int i = 0;i < s.size();i++) { 
        if (s[i] == ' ') { 
            for (int j = i - 1;j >= n;j--)
                cout << s[j];
            cout << " "; 
            n = i + 1; 
        } 
        if (i == s.size() - 1) { 
            for (int j = i;j >= n;j--)
                cout << s[j];
        }
    }
    return 0;
}

3年前 (04月09日)
小王

题目描述

在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字 母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输入描述

输入一行总长度不超过 80 的字符串

输出描述

输出倒序后的句子

样例输入

Hello World Here I Come

样例输出

Come I Here World Hello

题解

cpp

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
using namespace std;
int main()
{
    char a[100][100];
    int k=0;
    while(cin>>a[k]){
        k++;
    }
    for(int i=k-1;i>=0;i--){
        cout<<a[i]<<" ";
    }
    return 0;
}
3年前 (04月09日)
小王

题目描述

输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。 注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。

输入描述

一行单词序列,最少 1 个单词,最多 300 个单词,单词之间用至少 1 个空格间隔。单词序列总长度 不超过 1000。

输出描述

依次输出对应单词的长度,之间以空格间隔。

样例输入

She was born in 1990-01-02 and from Beijing city.

样例输出

3 3 4 2 10 3 4 7 5

题解

cpp

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
using namespace std;
int main()
{
    string s;
    cin >> s;
    cout << s.size(); 
    while (cin >> s)
    {
        cout << " " << s.size();
    }
    return 0;
}
3年前 (04月09日)
小王

题目描述

对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。 给定两个字符串 s1 和 s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字 符串的子串。例如 CDAA 是由 AABCD 两次移位后产生的新串 BCDAA 的子串,而 ABCD 与 ACBD 则不能 通过多次移位来得到其中一个字符串是新串的子串。

输入描述

一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过 30。

输出描述

如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出 true,否则输出 false。

样例输入

AABCD CDAA

样例输出

true

题解

cpp

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
using namespace std;
int main()
{
    string s1,s2;
    cin >> s1 >> s2;
    if (s2.size() > s1.size())
        swap(s2,s1);
    s1 += s1;
    for (int i = 0;i < s1.size();i++)
    {
        string s = "";
        for (int j = i;j < i + s2.size() && j < s1.size();j++)
             s += s1[j];
        if (s == s2)
        {
            cout << "true";
            return 0;
        }
    }
    cout << "false";
    return 0;
}
3年前 (04月09日)
小王

题目描述

输入两个不带空格的字符串,判断其中一个是否为另一个串的子串。(仅包含小写字母)

输入描述

两行,第一行是一个字符串 a(长度不超过 100)
第二行是一个字符串 b(长度比 a 长且不超过 1000)

输出描述

一行,“YES”表示 a 是 b 的子串,“NO”表示 a 不是 b 的子串

样例输入

abc
abdcabc

样例输出

YES

题解

cpp

#include <iostream>
#include <cstdio>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
    string s,t;
    int n = 0,b = 0,c = 0;
    cin >> s;
    cin >> t;
    b = t.size();
    c = s.size();
    for (int i = 0;i < b;i++)
    {
        for (int j = 0;j < c;j++)
        {
            if (s[j] == t[I])
            {
                if (s[j + 1] == t[i + 1])
                {
                     cout << "YES";
                     return 0;
                }
            }
        }
    }
    cout << "NO";
    return 0;
}
3年前 (04月09日)