1015 Reversible Primes (20point(s)) Easy 需要二刷 *初始化问题

基本思想:

主要考察这几个方面:

1.初始化问题;

2.输入问题;

3.进制转换;

4.素数判定和素数表得问题;

 

关键点:

1.初始化问题一定要注意,bool数组并不能用直接初始化;

2.输入问题涉及到多点测试问题,详见多点测试输入总结;

3.进制转换,已经很熟了,没什么好说的;

4.素数详见素数得总结;

 

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<vector> 
#include<string>
#include<math.h>
#include<algorithm>
#include<cstring>
using namespace std;
using std::vector;

const int maxn = 100200;
bool flag[maxn];

void init() {
	flag[0]=flag[1] = false;
	for (int i = 2; i < maxn; i++) {
		if (flag[i]) {
			for (int j = i + i; j < maxn; j += i)
				flag[j] = false;
		}
	}
}

int trans(int n,int r) {
	vector<int>vec;
	while (n != 0) {
		vec.push_back(n%r);
		n /= r;
	}
	int cnt = 0;
	for (int i = 0; i < vec.size(); i++) {
		cnt = vec[i] + cnt * r;
	}
	return cnt;
}

int main() {
	fill(flag, flag + maxn, true);
	init();
	int n, r;
	while (1){
		scanf("%d", &n);
		if (n < 0)
			break;
		scanf("%d", &r);
//		cout << flag[n] << endl;
		if (flag[n]) {
			if (flag[trans(n, r)])
				cout << "Yes" << endl;
			else {
				cout << "No" << endl;
			}
		}
		else {
			cout << "No" << endl;
		}
	}
	system("pause");
	return 0;
}

  

posted @ 2020-02-05 16:35  暮云林凌  阅读(174)  评论(0)    收藏  举报