是我的思路有问题吗?为什么不对
查看原帖
是我的思路有问题吗?为什么不对
520847
HOILAI_CEO楼主2023/7/18 14:54
#include <string>
#include <iostream>
using namespace std;

int res;

bool isprime(int num) {
    if (num == 2)
        return true;
    if (num % 2 == 0 || num < 2)
        return false;
    else {
        for (int i = 3; i * i <= num; i += 2) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}

bool isprime(string y)//重载
{
    int _y = atoi(y.c_str());
    return isprime(_y);
}

void countPossibilities(string date, int pos) 
{
    if (pos == 8) 
    {
        if (isprime(date.substr(0, 2)) && isprime(date.substr(2, 2)) && isprime(date.substr(4, 4))) {
            res++;
        }
        return;
    }

    if (date[pos] == '-')
    { 
        for (int i = 0; i <= 7; i++) 
        { 
            date[pos] = i+'0';
            countPossibilities(date, pos + 1); 
        }
        date[pos] = '-'; 
    }
    else {
        countPossibilities(date, pos + 1); 
    }
}

int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        string date;
        cin >> date;
        res = 0;
        countPossibilities(date, 0);
        cout << res << endl;
    }
}

2023/7/18 14:54
加载中...