我这代码能过
查看原帖
我这代码能过
1062683
lottle1212__楼主2024/8/27 22:36

内存限制 125MB,但我定义了 1e8 的 int + bool,空间应该是 400多 MB?

#include <iostream>
#include <bitset>
#include <algorithm>
#include <string.h>
#include <iomanip>
#include <math.h>
#include <string>
#include <vector>
#include <queue>
#include <set>
#include <map>
#define ll long long
#define db double
#define L(i, j, k) for (int i=(j); i<=(k); ++i)
#define R(i, j, k) for (int i=(j); i>=(k); --i)
#define mp make_pair
#define pii pair <int, int>
#define pll pair <ll, ll>
#define vi vector <int>
#define vl vector <ll>
#define eb emplace_back
#define pb push_back
#define sz(x) ((int) x.size())
#define ms(f, x) memset(f, x, sizeof (f))
#define ACN(i, h_u) for (int i=h_u; i; i=e[i].nxt)
using namespace std;
template <typename INT> void rd(INT &res) {
	res=0; bool f=false; char ch=getchar();
	while (ch<'0'||ch>'9') f|=(ch=='-'), ch=getchar();
	while (ch>='0'&&ch<='9') res=(res<<1)+(res<<3)+(ch^48), ch=getchar();
	res=(f?-res:res);
}
template <typename INT, typename ...Args>
void rd(INT &res, Args &..._res) { rd(res), rd(_res...); }
//dfs
const int mod=1e8+7; 
const int maxn=1e8;
const int N=maxn+10;
int prime[N], tot, n; bool vis[N];
//wmr
void init(int n) {
	L(i, 2, n) {
		if (!vis[i]) prime[++tot]=i;
		L(j, 1, tot) {
			if (i*prime[j]>n) break;
			vis[i*prime[j]]=true;
			if (i%prime[j]==0) break;
		}
	} 
}
//incra

//lottle
signed main() {
//	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//	freopen(".in", "r", stdin);
//	freopen(".out", "w", stdout);
	rd(n);
	init(n);
	int ans=1;
	L(i, 1, tot) {
		ll res=1;
		while (res*prime[i]<=n) res*=prime[i];
		ans=res*ans%mod;
	}
	printf("%d\n", ans);
	return 0;
}

2024/8/27 22:36
加载中...