TLE最后一个点求助

P1217 [USACO1.5] 回文质数 Prime Palindromes

wangziyang202511036 @ 2024-12-25 13:23:37

#include <bits/stdc++.h>
using namespace std;
int a[10000005];
int huiwen[10000005];
bool isprime(int n)//判断质数
{
    if(n<=1) return false;
    if(n==2) return true;
    if((n%10)%2==0)
    {
        return false;
    }
    for(int i=3;i<=n/i;i+=2)
    {
        if(n%i==0)
        {
            return false;
        }
    }
    return true;
}
bool hw(int n)//判断回文
{
    int j=0;
    while(n)
    {
        a[++j]=n%10;
        n/=10;
    }
    for(int i=1;i<=j;i++)
    {
        if(a[i]!=a[j-i+1])
        {
            return false;
        }
    }
    return true;
}
inline int read()//快读
{
    bool f=1;
    int g=0;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-')
        {
            f=false;
            c=getchar();
        }
    }
    while(c>='0'&&c<='9')
    {
        g=g*10+c-48;
        c=getchar();
    }
    return f?g:-g;
}
void write(int n)//快写
{
    if(n<0)
    {
        putchar('-');
        n=-n;
    }
    if(n>9)
    {
        write(n/10);
    }
    putchar((n%10)|0x30);
    return;
}
int main()
{
    int a,b;
    a=read();
    b=read();
    int j=0;
    for(int i=a;i<=b;i++)
    {
        if(hw(i))
        {
            huiwen[j++]=i;
        }
    }
    for(int i=0;i<j;i++)
    {
        if(huiwen[i]==0)
        {
            break;
        }
        if(isprime(huiwen[i]))
        {
            write(huiwen[i]);
            cout<<endl;
        }
    }
    return 0;
}

by wangqiyu_why @ 2024-12-27 13:36:14

#include <bits/stdc++.h>
using namespace std;
int a[10000005];
int huiwen[10000005];
bool isprime(int n)//判断质数
{
    if(n<=1) return false;
    if(n==2) return true;
    if((n%10)%2==0)
    {
        return false;
    }
    for(int i=3;i<=n/i;i+=2)
    {
        if(n%i==0)
        {
            return false;
        }
    }
    return true;
}
bool hw(int n)//判断回文
{
    int j=0;
    while(n)
    {
        a[++j]=n%10;
        n/=10;
    }
    for(int i=1;i<=j;i++)
    {
        if(a[i]!=a[j-i+1])
        {
            return false;
        }
    }
    return true;
}
inline int read()//快读
{
    bool f=1;
    int g=0;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-')
        {
            f=false;
            c=getchar();
        }
    }
    while(c>='0'&&c<='9')
    {
        g=g*10+c-48;
        c=getchar();
    }
    return f?g:-g;
}
void write(int n)//快写
{
    if(n<0)
    {
        putchar('-');
        n=-n;
    }
    if(n>9)
    {
        write(n/10);
    }
    putchar((n%10)|0x30);
    return;
}
int main()
{
    int a,b;
    a=read();
    b=read();
    if(a%2==0)a++;
    int j=0;
    for(int i=a;i<=b;i+=2)
    {
        if(hw(i))
        {
            huiwen[j++]=i;
        }
    }
    for(int i=0;i<j;i++)
    {
        if(huiwen[i]==0)
        {
            break;
        }
        if(isprime(huiwen[i]))
        {
            write(huiwen[i]);
            cout<<endl;
        }
    }
    return 0;
}

@wangziyang202511036


by wangziyang202511036 @ 2024-12-27 14:01:28

太谢谢了!卡了这么久,终于过了,已关@wangqiyu_why


|