src2020/1598_roundfind_sushu/main.cpp

82 lines
1.7 KiB
C++

#include <cmath>
#include <iostream>
using namespace std;
int n, k,a[8] = { 0, 1, 2, 3, 4, 5, 6, 7 },allans=0;
bool ce[8]={0};
bool pan(int n)
{
int len = sqrt(n);
for (int i = 2; i <= len; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
void dg(int xian){
if(xian>n){
// for(int i=1;i<=n;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
int now = 0, zong = 1, ans = 0;
for (int i = n - k + 2; i <= n; i++) {
now *= 10;
now += a[i];
zong *= 10;
}
for (int i = 1; i <= n; i++) {
now %= zong;
now *= 10;
now += a[i];
ans += pan(now);
}
if(ans>allans){
allans=ans;
}
}
for(int i=2;i<=n;i++){
if(ce[i]==0){
a[xian]=i;
ce[i]=1;
dg(xian+1);
ce[i]=0;
}
}
}
int main()
{
int now = 0, zong = 1, ans = 0;
cin >> n >> k;
if (k == 1) {
if (n == 1) {
cout << "0" << endl
<< "0";
} else {
int chu = 1;
for (int i = 3; i <= n; i+=2) {
chu++;
}
cout << chu << endl
<< chu;
}
} else {
for (int i = n - k + 2; i <= n; i++) {
now *= 10;
now += a[i];
zong *= 10;
}
for (int i = 1; i <= n; i++) {
now %= zong;
now *= 10;
now += a[i];
ans += pan(now);
}
cout<<ans<<endl;
dg(2);
cout<<allans;
}
return 0;
}