为什么只有30分。。
查看原帖
为什么只有30分。。
174942
KLNG7楼主2020/7/12 22:33

蒟蒻没有查出问题,向各位大佬请教

#include<bits/stdc++.h>
using namespace std;
int T,t,tot;
const int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
const int prime[]={0,3,5,7,9,11,13,17,19,23,29,31,37};
int ans[100005],a[105];
char s[50];
inline bool isprime(int x)
{
    for(int i=2;i*i<=x;i++)
    {
        if(x%i==0) return 0;
    }
    return 1;
}
int main()
{
    ios::sync_with_stdio(0);
    for(int i=1;i<=12;i++)
    {
        for(int j=1;prime[j]<=days[i];j++)
        {
            if(isprime(i*100+prime[j]))
            {
                a[++t]=i*100+prime[j];
            }
        }
    }
    for(int i=4;i<=9999;i+=4)
    {
        if((i%100||!(i%400))&&isprime(i*10000+229))
        {
            ans[++tot]=i*10000+229;
        }
    }
    for(int i=1;i<=9999;i++)
    {
        for(int j=1;j<=t;j++)
        {
            if(isprime(i*10000+a[j]))
                ans[++tot]=i*10000+a[j];
        }
    }
    cin>>T;
    while(T--)
    {
        cin >> (s + 1);
        int cnt = 0;
        for (int i = 1; i <= tot; i++) {
            int now = ans[i], flag = 1;
            for (int j=8;flag&&j;j--,now /= 10)
                if (s[j]!='-'&& s[j]-'0'!= now % 10)
                    flag = 0;
            cnt+=flag;
        }
        cout<<cnt<<endl;
    }
    return 0;
}
2020/7/12 22:33
加载中...