/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Time Exceeded ≥2598ms ≥5.625 MiB
#2 Time Exceeded ≥2600ms ≥5.586 MiB

Code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<int> prime;
bool mark[1000005];
void sieve()
{
	int n = 1000000;
	int  sqrtn = sqrt(n), i, j;
	mark[1] = 1;
	prime.push_back(2);
	for (i = 4; i <= n; i += 2)
	{
		mark[i] = 1;
	}
	for (i = 3; i <= n; i += 2)
	{
		if (mark[i] == 0)
		{
			prime.push_back(i);
			if (i <= sqrtn + 2)
			{
				for (j = i * i ; j <= n ; j += (2 * i))
				{
					mark[j] = 1;
				}
			}
		}
	}
}
// vector<int> factor;
map<ll, ll> factor;
void primefactorize(long long n)
{
	factor.clear();
	int i;
	for (i = 0; i < (int)prime.size() && (long long)prime[i]*prime[i] <= (long long)n; i++)
	{
		if (n % prime[i] == 0)
		{
			while (n % prime[i] == 0)
			{
				factor[prime[i]]++;
				n /= prime[i];
			}
		}
	}
	if (n > 1)
		factor[prime[i]]++;
}
int res[1000005];

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	long long n, i, j, T, t;
	sieve();
	long long sum = 0, mx = 0;
	for (long long j = 1; j <= 1000000; j++)
	{
		sum += j;
		map<long long , long long> m;
		map<long long , long long> :: iterator it;
		primefactorize(sum);
		long long NOD = 1;
		for (it = factor.begin() ; it != factor.end() ; it++)
		{
			NOD *= (it -> second + 1);
		}
		// cout << NOD <<  ' ';
		// ll NOD = 1;
		// primefactorize(sum);
		// for(auto it:factor){
		// 	NOD *= (it.S+1);
		// }
		mx = max(mx, NOD);
		res[j] = mx;
	}
	// cout << endl;
	scanf("%lld", &T);
	for (t = 1; t <= T; t++)
	{
		scanf("%lld", &n);
		cout << res[n] << '\n';
	}
	return 0;
}

Information

Submit By
Type
Submission
Problem
P1180 Maximum Divisor
Contest
Brain Booster #9
Language
C++17 (G++ 13.2.0)
Submit At
2025-04-06 16:16:43
Judged At
2025-04-06 16:16:43
Judged By
Score
0
Total Time
≥2600ms
Peak Memory
≥5.625 MiB