开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 11 天,点击查看活动详情
回文质数
题目描述
因为 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 是回文质数。
写一个程序来找出范围 (一亿)间的所有回文质数。
输入格式
第一行输入两个正整数 和 。
输出格式
输出一个回文质数的列表,一行一个。
样例
- 样例输入
5 500
- 样例输出
5
7
11
101
131
151
181
191
313
353
373
383
解题代码
#include<bits/stdc++.h>
using namespace std;
// 检查位数:偶数位的回文数(除了11)必然不是质数
bool check1(int x) {
if((1000 <= x && x <= 9999) || (100000 <= x && x <= 999999) || (10000000 <= x && x <= 100000000)) {
return 0;
}
return 1;
}
// 检查是否回文
bool check2(int x) {
int a[15], flag = 1;
while (x > 0) {
a[flag] = x % 10;
x /= 10;
flag++;
}
for (int i = 1; i <= flag / 2; i++) {
if(a[i] != a[flag-i]) return 0;
}
return 1;
}
// 检查是否为质数
bool check3(int x) {
if(x == 2) return 1;
for(int i = 2; i <= sqrt(x); i++) {
if(x % i == 0) return 0;
}
return 1;
}
int l, r;
int main() {
cin >> l >> r;
if(l % 2 == 0) l++;
// 枚举每一个奇数
for(int i = l; i <= r; i = i + 2) {
if(check1(i) == 0) continue;
if(check2(i) == 0) continue;
if(check3(i) == 0) continue;
cout << i << endl;
}
return 0;
}
小玉在游泳
题目描述
小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游 米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的 。现在小玉想知道,如果要游到距离 米的地方,她需要游多少步呢。请你编程解决这个问题。
输入格式
输入一个实数 (单位:米),表示要游的目标距离。
输出格式
输出一个整数,表示小玉一共需要游多少步。
样例
- 样例输入
4.3
- 样例输出
3
提示
数据保证,,且 小数点后最多只有一位。
解题代码
#include<bits/stdc++.h>
using namespace std;
int result;
long double s, x = 2, sum;
int main()
{
cin >> s;
while(sum < s) {
sum += x;
x = x / 100 * 98;
result++;
}
cout << result << endl;
return 0;
}
数字反转
题目描述
给定一个整数 ,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
输入格式
一个整数 。
输出格式
一个整数,表示反转后的新数。
样例
- 样例输入1
123
- 样例输出1
321
- 样例输入2
-380
- 样例输出2
-83
提示
【数据范围】
解题代码
#include<bits/stdc++.h>
using namespace std;
int number, result;
int main() {
cin >> number;
while(number!=0){
result = result*10 + number%10;
number /= 10;
}
cout << result;
}