i*i<=n的注意事项——刷题经验

在这里插入图片描述
n的范围为此时,for循环使用i*i<=n为截至条件,可能会炸, 使用long long,或者i<=sqrt(n)可以解决

#include<bits/stdc++.h>
using namespace std;
#define mem(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define ll long long
#define ull unsigned long long
#define IOS ios::sync_with_stdio(0),cin.tie(0)
#define gcd(a,b) __gcd(a,b)
#define ft first
#define sd second
#define endl '\n'
#define PI acos(-1.0)
#define lcm(a,b) a/gcd(a,b)*b
#define INF_INT 0x3f3f3f3f
#define INF_LONG 4557430888798830399
//inline void print(__int128 x)
//{
//	if(x<0) {putchar('-'); x=-x;}
//	if(x>9) print(x/10);
//	putchar(x%10+'0');
//}
//inline int read()
//{
//	int s=0,x=1;
//	char ch=getchar();
//	while(ch<'0'||ch>'9') {if(ch=='-') x=-1; ch=getchar();}
//	while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar(); }
//	return s*x;
//} 
int main()
{
	int n=2147483647;
	cout<<sqrt(n)<<endl;
	for(int i=46339; i*i<=n; i++)
	{
		cout<<i*i<<endl;
		if(i*i<0) break;
	}
	return 0;
 } 



在这里插入图片描述

posted @ 2022-08-28 08:43  翔村亲亲鸟  阅读(163)  评论(0编辑  收藏  举报