MLE?
查看原帖
MLE?
448759
unknow_楼主2021/11/25 20:49
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e8, M = 5761455;
int n, l, r, t, ans;
bool pr[N+5];
int Prime[M+5];
int tot, num;
int sum(int n)//作用是求出每位之和
{
	int sum=0;
	while (n != 0)
	{
		sum += n%10;
		n /= 10;
	}
	return sum;
}
void prime()//线性筛出素数
{
	for (int i=2; i<=N; i++)
    {
        if (!pr[i])
            Prime[++tot]=i;
        for (int j=1; i*Prime[j]<=N; j++)
        {
            pr[i*Prime[j]] = true;
            if (!(i%Prime[j]))
                break;
        }
    }
    for (int i=1; i<=tot; i++)
        if (!pr[sum(Prime[i])])               
            Prime[++num] = Prime[i];
}
int main()
{
	scanf ("%d", &t);
	prime();
	while (t--)
	{
		scanf ("%d%d", &l, &r);
        ans = 0;
        for (int i=l; i<=r; i++)
    		if (upper_bound(Prime+1, Prime+num+1, i)-lower_bound(Prime+1, Prime+num+1, i) != 0)
                ans++;
 		//二分寻找答案
        printf ("%d\n", ans);
	}
	return 0;
}

码风奇特不管了

T了3个,M了1个。或许二分还可以写的更简洁一点,但是MLE让我很不敢相信……为什么单独那个点会空间超限?后来我改了一下

#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 1e8, M = 5761455;
int n, l, r, t, ans;
bool pr[N+1];
int Prime[M+1];
int tot, num;
int sum(int n)
{
	int sum=0;
	while (n != 0)
	{
		sum += n%10;
		n /= 10;
	}
	return sum;
}
void prime()
{
	for (int i=2; i<=N; i++)
    {
        if (!pr[i])
            Prime[++tot]=i;
        for (int j=1; i*Prime[j]<=N; j++)
        {
            pr[i*Prime[j]] = true;
            if (!(i%Prime[j]))
                break;
        }
    }
    for (int i=1; i<=tot; i++)
        if (!pr[sum(Prime[i])])               
            Prime[++num] = Prime[i];
}
int main()
{
	scanf ("%d", &t);
	prime();
	while (t--)
	{
		scanf ("%d%d", &l, &r);
        printf("%d\n", upper_bound(Prime+1, Prime+num+1, r)-Prime-(lower_bound(Prime+1, Prime+num+1, l)-Prime));
	}
	return 0;
}

然而TLE的事解决了,MLE的问题还是存在。。。

我不能理解的就是我开的数组,数组里面的内容都是差不多的嘛,为什么会单独一个点M掉?求大佬解释

2021/11/25 20:49
加载中...