如何有效地评估SPOJ Square的免费号码?

时间:2016-01-31 11:02:08

标签: c++

我尽力解决Spoj问题No Squares numbers但我得到了(TLE)。请告诉我们如何接近。我找不到任何正确的方法。这是我的代码:

#include <bits/stdc++.h>
using namespace std;

#define size 10000004
int mark[size+1];

void sieve()
{
    for(int i=2,k;(k=i*i)<=size;++i)
    {
        for(int j=k;j<=size;j=j+k)
            mark[j]=-1;
    } 
}

int fn(int a,int b,int c)
{
    int i,j,k,cnt=0;
    for(i=a;i<=b;++i)
    {
        j=i;
        if(mark[j]!=-1)
        {
            while(j>0)
            {
                if(j%10==c)
                {
                    cnt+=1;
                    break;
                }
                else
                    j=j/10;
            }
        }
    }
    return cnt;
}

int main()
{
    sieve();
    int t,a,b,c;
    cin>>t;
    for(int i=0;i<t;t++)
    {
        cin>>a>>b>>c;
        cout<<fn(a,b,c)<<endl;
    }
} 

0 个答案:

没有答案