文章

40

粉丝

607

获赞

68

访问

401.0k

头像
1077波浪数(傻瓜式版)
P1077
发布于2020年3月10日 16:12
阅读数 7.0k

#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、判断数组下标为奇数的位置上...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发