結果

問題 No.12 限定された素数
ユーザー Twizz
提出日時 2017-05-20 00:50:21
言語 C++11
(gcc 4.8.5)
結果
AC  
実行時間 179 ms
コード長 1158 Byte
コンパイル時間 1700 ms
使用メモリ 8300 KB

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
01.txt AC 153 ms
8300 KB
02.txt AC 149 ms
8300 KB
03.txt AC 141 ms
8300 KB
04.txt AC 179 ms
8296 KB
05.txt AC 137 ms
8300 KB
06.txt AC 153 ms
8300 KB
07.txt AC 154 ms
8300 KB
08.txt AC 155 ms
8296 KB
09.txt AC 143 ms
8300 KB
10.txt AC 145 ms
8300 KB
system_test1.txt AC 160 ms
8300 KB
system_test2.txt AC 171 ms
8300 KB
system_test3.txt AC 152 ms
8300 KB
system_test4.txt AC 159 ms
8296 KB
system_test5.txt AC 168 ms
8300 KB
system_test6.txt AC 162 ms
8296 KB
system_test7.txt AC 149 ms
8296 KB
system_test8.txt AC 147 ms
8296 KB
system_test9.txt AC 149 ms
8296 KB
system_test10.txt AC 147 ms
8296 KB
system_test11.txt AC 152 ms
8296 KB
system_test12.txt AC 152 ms
8300 KB
system_test13.txt AC 157 ms
8296 KB
system_test14.txt AC 152 ms
8296 KB
テストケース一括ダウンロード

ソースコード

diff #
#include"bits/stdc++.h"

//#include<bits/stdc++.h>
using namespace std;
#define print(x) cout<<x<<endl;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define REP(i,a) for(int i=0;i<a;i++)
typedef long long ll;
const ll mod = 10000000000;

int n;
set<int>a;
int cnt[10] = {};
int MAX = 5000000;

bool dp[5000000];

bool hantei() {
	REP(i, 10) {
		if (a.count(i) == 0) {
			if (cnt[i] != 0)return false;
		}
	}
	return true;
}

bool ok() {
	REP(i, 10) {
		if (a.count(i) != 0) {
			if (cnt[i] == 0)return false;
		}
	}
	return true;
}

vector<int> prime() {
	vector<int> ret;
	for (int i = 2; i < MAX; i++)
	{
		if (dp[i]) continue;
		ret.push_back(i);
		for (int j = i + i; j < MAX; j += i)
		{
			dp[j] = true;
		}
	}
	return ret;
}

int main() {
	cin >> n;
	REP(i, n) {
		int t; cin >> t;
		a.insert(t);
	}

	vector<int>v = prime();
	REP(i, 10)cnt[i] = 0;
	int ans = -1;
	int l = 1;
	REP(i, v.size()) {
		string tm = to_string(v[i]);
		REP(j, tm.size()) {
			cnt[tm[j] - '0']++;
		}
		if (!hantei()) {
			REP(j, 10)cnt[j] = 0;
			l = v[i] + 1;
		}
		if (ok()) {
			ans = max(ans, v[i+1]-1 - l);
		}
		if (a.size() == 10)ans = 4999999;
	}
	print(ans);
	return 0;
}
0