文章
40
粉丝
607
获赞
70
访问
424.6k
#include
using namespace std;
int s[105] = { 0 };
bool bolang(int num, int jz) {//判断是否为n进制的波浪数
bool flag = true;//设置一个标志,true为波浪数,false不是波浪数
int count = 0;//数组下标
while (num != 0) {//转换成n进制
s[count++] = num % jz;
num = num / jz;
}
if (s[0] == s[1]) {
flag = false;
}
else {
for (int k = 2;k < count;k++) {//判断数组的奇偶位是否相等,倒序与否在这里没有影响
if (k % 2 == 0) {//偶数位是不是同一个数
if (s[0] != s[k]) {
flag = false;
break;
}
}
else {
if (s[1] != s[k]) {//奇数位是不是同一个数
flag = false;
break;
}
}
}
}
return flag;
}
int main()
{
int a, b, m, n, x;
cin >> a >> b >> m >> n >> x;
for (int i = m;i <= n;i++)
{
int count = 0;//表示它是几重波浪数
for (int j = a;j <= b;j++) {
if (bolang(i, j)) {
count++;
}
}
if (count == x) {
cout << i << endl;
}
}
return 0;
}
判断波浪数步骤:
1、把十进制数转换成n进制数,并按位存放在数组中(这里就不需要倒序了)
2、判断数组下标为奇数的位置上...
登录后发布评论
暂无评论,来抢沙发