小王子

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

小王

题目描述

每一本正式出版的图书都有一个 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日)
小王

题目描述

判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。

输入描述

两行,每行包含一个字符串。

输出描述

若两个字符串相等,输出 YES,否则输出 NO。

样例输入

a A bb BB ccc CCC
Aa BBbb CCCccc

样例输出

YES

题解

cpp

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
using namespace std;
int main()
{
    string s,s1;
    int ss1 = 0,ss2 = 0;
    getline(cin,s);
    getline(cin,s1);
    for (int i = 0;i < s.size();i++) { 
        if(s[i] >= 'a' && s[i] <= 'z') s[i] -= 32;
        if (s[i] == ' ') continue;
        ss1 += s[i];
    }
    for (int i = 0;i < s1.size();i++) { 
        if(s1[i] >= 'a' && s1[i] <= 'z') s1[i] -= 32;
        if (s1[i] == ' ') continue;
        ss2 += s1[i];
    }
    if (ss1 == ss2) cout << "YES";
    else cout << "NO";
    return 0;
}
3年前 (04月09日)