求助,为啥O0就不会RE,开O1、O2、O3优化全RE?
  • 板块学术版
  • 楼主原子げんし
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/2/4 22:48
  • 上次更新2023/11/5 03:44:09
查看原帖
求助,为啥O0就不会RE,开O1、O2、O3优化全RE?
348511
原子げんし楼主2021/2/4 22:48

RT

代码如下:

//rng_58 bless me

#include<bits/stdc++.h>
using namespace std;
//fast io:
inline int read() {
	int s = 0,f = 1;
	char ch = getchar();
	while(ch < '0' || ch > '9'){
		if(ch == '-') {
			f = -1;
		}
		ch = getchar();
	}
	while(ch >= '0' && ch <= '9') {
		s = s * 10 + ch - '0';
		ch = getchar();
	}
	return s * f;
}
inline void write(int x) {
    if(x < 0) {
    	putchar('-');
		x = -x;
	}
    if(x > 9)  {
		write(x / 10);
	}
    putchar(x % 10 + '0');
}
//define:
#define REP(i,n) for(int i = 0; i < n; i++)
//const:
const int MAXN = 30;
//something:
int a[MAXN];
int N;
vector <int> v;
int p[MAXN];
bool vis[MAXN];
void iint() {
	for(int i = 2;i < 100;i++) {
		if(!p[i]) {
			for(int j = i * i;j <= 100;j += i) {
				p[j] = 1;
			}
		}
	}
	p[1] = 1;
	memset(vis,0,sizeof vis);
}
bool isp(int x) {
	return !p[x];
}
inline void dfs() {
	if(v.size() == N) {
		if(isp(v[0] + v[N - 1])) {
			putchar('1'); putchar(' ');
			REP(i,v.size()) {
				write(v[i]); putchar(' ');
			}
			cout << endl;
		}
		return;
	}
	for(int i = 2;i <= N;i++) {
		if(isp(i + v[v.size() - 1]) && !vis[i]) {
			vis[i] = 1; v.push_back(i);
			dfs();
			vis[i] = 0; v.pop_back();
		}
	}
}
//run:
void solve() {
	N = read();
	iint();
	vis[1] = 1;
	dfs();
}
//times:
void Times(int T) {
	while(T--) {
		solve();
	}
}
//begin:
int main() {
	int T;
	T = 1;
	//cin >> T;
	Times(T);
	return 0;
}

2021/2/4 22:48
加载中...