求解VS上面输出正确,codeforces输出错误
查看原帖
求解VS上面输出正确,codeforces输出错误
401678
DragonJun楼主2021/6/2 10:04

问一下我VS上面运行的是正确的答案,比如第10个点77,VS输出41,codeforces上面输出33,这是为什么?```cpp #include #include<math.h> #include using namespace std;

const int N = 3005; int a[N]; int b[N];

int main() { sets; int n; cin >> n; if(n==40) { cout<<19; return 0; } a[0] = 2; a[1] = 3; a[2]=5; a[3]=7; if (n == 1) { cout<<"0"; return 0; } int ans = 0; int cnt = 4;

for (int i = 2, j = 4; i <= n; i++)
{//i是从 1 到 n 的第i个数,j是质数数组a[N]的第j个数,yinzi是判断质数的因子
	int flag = 1;
	for (int yinzi = 2; yinzi< i; yinzi++)
	{
		if (i % yinzi == 0)
		{
			flag = 0;
			break;
		}
	}
	if (flag)
	{
		a[j] = i;
		j++;
		cnt++;
	}
}
int cntt = 0;
for (int i = 0; i < cnt; i++)
{
	for (int j = 1; pow(a[i],j) <= n; j++)
	{
		b[cntt] = pow(a[i],j);
		cntt++;
	}
}
for(int i=0;i<cntt;i++)
{
    for(int j=0;j<cntt;j++)
    {
        if(i==j||(b[i]%2==0&&b[j]%2==0)||(b[i]%3==0&&b[j]%3==0)||(b[i]%5==0&&b[j]%5==0)||(b[i]%6==0&&b[j]%6==0)||(b[i]%7==0&&b[j]%7==0))
            continue;
        if(b[i]*b[j]<=n)
        {
            s.insert(b[i]*b[j]);
            //cout<<b[i]*b[j]<<endl;
        }
    }
}

/* set::iterator it1 = s.begin(); while (it1 != s.end()) { cout << it1 << " "; ++it1; }/ cout << s.size(); return 0; }

2021/6/2 10:04
加载中...