紧跟潮流,把说说列表整成了朋友圈模式,技术限制了想象力,只好弄了个简易版!
聆听小王子,守望成长,静待花开
题目描述
两个相差为 2 的素数称为素数对,如 5 和 7,17 和 19 等,本题目要求找出所有两个数均不大于 n 的 素数对。
输入
一个正整数 n。1 <= n <= 10000。
输出
所有小于等于 n 的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数 对,输出 empty。
样例输入
100
样例输出
3 5
5 7
11 13
17 19
29 31
41 43
59 61
71 73
题解
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
bool isprime(int x)
{
if (x < 2)
return false;
for (int i = 2;i < x;i++)
{
if (x % i == 0)
return false;
}
return true;
}
int main() {
int n,t,c; cin >> n;
for (int i = 1;i <= n - 2;i++)
{
if(isprime(i))
{
if (isprime(i + 2))
{
cout << i << " " << i + 2 << endl;
t = 1;
}
}
}
if (t == 0)
cout << "empty";
return 0;
}
题目描述
151既是一个质数,又是一个回文数,因此它可以被称为回文质数。 现在给定两个整数 a,b ,请你找出在 [a,b] 范围内的所有回文质数。
输入
两个整数a和b(1 <= a <= b <= 100000)
输出
该 a 到 b 范围内所有的回文质数
样例输入
1 200
样例输出
3
5
7
11
101
131
151
181
191
题解
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
using namespace std;
int main()
{
int i,j,s=0,a,b,t;
cin>>a>>b;
for(i=a;i<=b;i++)
{
t=i;
while(t!=0)
{
s=s*10+t%10;
t=t/10;
}
if(i==s)
{
for(j=2;j*j<=i;j++)
{
if(i%j==0)
break;
}
if(j*j>i)
{
if (i == 1) continue;
cout<<i<<endl;
}
}
s=0;
}
return 0;
}
题目描述
一元 n 次多项式可用如下的表达式表示
给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式: 1、多项式中自变量为 x,从左到右按照次数递减顺序给出多项式。
2、多项式中只包含系数不为 0 的项。
3、如果多项式 n 次项系数为正,则多项式开头不出现“+”号,如果多项式 n 次项系数为负,则多项 式以“-”号开头。
4、对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项系数为正或者系数 为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于 0 次的项,其系数的绝对值为 1,则 无需输出 1)。如果 x 的指数大于 1,则接下来紧跟的指数部分的形式为“xb”,其中 b 为 x 的指数; 如果 x 的指数为 1,则接下来紧跟的指数部分形式为“x”;如果 x 的指数为 0,则仅需输出系数即可。 5、多项式中,多项式的开头、结尾不含多余的空格。
输入格式
输入文件共有 2 行。
第一行有 1 个整数 n,表示一元多项式的次数。
第二行有 n+1 个整数,其中第 i 个整数表示第 n−i+1 次项的系数,每两个整数之间用空格隔开。 多项式各次项系数的绝对值均不超过 100。
输出格式
输出文件共 1 行,按题目所述格式输出多项式。
数据范围
1≤n≤100
输入样例
5
100 -1 1 -3 0 10
输出样例
100x^5-x^4+x^3-3x^2+10
题解
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
using namespace std;
int main()
{
int n = 0,a = 0;
bool isf = true;//µ±Ç°ÕâÒ»ÏîÊÇ·ñΪ¿ªÍ·
cin >> n;
for (int i = n;i >= 0;i--)
{
cin >> a;
if (a == 0) continue;
if (isf == false && a > 0) cout << "+";
if (a < 0) cout << "-";
a = abs(a);
if(a != 1 || i == 0) cout << a;
if(i != 0) cout << "x"; if(i > 1) cout << "^" << i;
isf = false;
}
return 0;
}
题目描述
国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。 其中 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:121:0
2:1
题解
#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;
}
题目描述
每一本正式出版的图书都有一个 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
题解
#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;
}
题目描述
凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?
注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。
统计标题字符数时,空格和换行符不计算在内。
输入格式
输入文件只有一行,一个字符串 s。
输出格式 输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。 数据范围
规定 |s| 表示字符串 s 的长度(即字符串中的字符和空格数)。 1≤|s|≤5,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。
样例输入 #1
123
样例输入 #2
Ca 45
样例输出 #1
3
样例输出 #2
4
题解
#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;
}
题目描述
输入一个句子(一行),将句子中的每一个单词翻转后输出。
输入描述
只有一行,为一个字符串,不超过 500 个字符。单词之间以空格隔开。
输出描述
翻转每一个单词后的字符串
样例输入
hello world
样例输出
olleh dlrow
题解
#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;
}