【 OJ 】 HDOJ1014 迷宫搜索类问题 [ 13 ]

ummmm….终于又AC了一题…..ummmmm

数论不好,暂时还没搞清楚网上的方法互质,我的就是ummm暴力出奇迹,暴搜挂着机,题目意思MOD-1出MOD-1个不重复不为0数字那么就弄个bool数组来….保存是否已经被记录,被记录直接出来失败,如果没有继续按照公式搜索……

# include<iostream>
#include <iomanip>
using namespace std;
bool IS_OK[1000000] = {false };//标记到100W个MOD
int main(void) {
	//Each line of input will contain a pair of integers for STEP and MOD in that order (1 <= STEP, MOD <= 100000).
	int STEP, MOD;
	int seed = 0;
	IS_OK[0] = true;
	int index = 0;
	while (cin >> STEP >> MOD) {
		seed = 0;
		for (index = 0; index < MOD - 1; ++index) {
			seed = (seed + STEP) % MOD;
			if (!IS_OK[seed])	//在MOD-1 步之内要出MOD-1个不一样的数,既然有了相同的肯定完蛋了
				IS_OK[seed] = true;
			else 
				break;
		}//数据迭代检查
		if (index == MOD - 1) {//判断迭代是否是break出来的
			for (index = 0; index < MOD - 1; index++) {
				if (!IS_OK[index]) 
					break;
			}//检查是否有false
		}
		//判断检查是否是break出来的
		cout << setw(10) << STEP << setw(10) << MOD << "    ";
		cout << ((index == MOD - 1 )? "Good Choice" : "Bad Choice");
		cout << endl << endl;
		//初始化判断IS_OK
		for (index = 1; index < MOD; ++index) {
			IS_OK[index] = false;
		}
	}
	system("pause");
	return 0;
}

 

    原文作者:迷宫问题
    原文地址: https://blog.csdn.net/qingcoffe/article/details/83446484
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞