XTU-OJ-1452-完全平方数-笔记

参考博客

XTU-OJ 1452-完全平方数

题意

输入一个奇数,使得 n*(2*a+n-1)/2是一个完全平方数,求满足条件的最小的a

1<=n<=1e9

先输入样例数,再输入n

输入

2
1
3

输出

0
2

代码

#include

#define N 1000000010

int a[1000000];

int main()
{
	int cnt=0;
	for(int i=1;i*i<=N;i++)
	{
		a[++cnt]=i*i;
	}
	cnt++;
	a[cnt]=cnt*cnt;
	
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int n;
		scanf("%d",&n);
		
		int temp=n;
		for(int i=2;i<=cnt;i++)
		{
			while(temp%a[i]==0)
				temp/=a[i];
		}
		
		if(temp==n)
		{
			if(n==1)	puts("0");
			else         printf("%d\n",(n+1)/2);
			
			continue;
		}
		
		for(int i=1;i<=cnt;i++)
		{
			int ans=a[i]*temp-(n-1)/2;
			if(ans>=0)
			{
				printf("%d\n",ans);
				break;
			}
		}
	}
	
	return 0;
}

想法

好难,没有老师讲解和社区讨论,感觉还是差点意思,希望以后有一天,可以把oj上的题轻松的写出来

现在写oj上的题,就像是高中写老师布置的没有详细解析的作业题,然后老师会选择一些比较有代表性的题目进行讲解,那么那些没有代表性的自己不会做的题目咋整呢,自己一道一道的啃,这不是自己为难自己,自己给自己加难度么

为什么不做有完整详细步骤的题目,为什么不做有详细题解,视频解析,讨论社区的题目,等到实力足够了再来做oj,就像高中刷题刷到熟练了再去考试一样

当然oj还是要做的,毕竟马上就要考试了

想了一上午,感觉理解的差不多了,但是自己写还是出现奇怪的错误,一点心态都没有了

主要是有疑问解决不了,自己也没有那股钻研的劲头,也不知道该请教谁

首先根据题意求和,得到题意里面说的式子。

式子的化简如图
XTU-OJ-1452-完全平方数-笔记_第1张图片

你可能感兴趣的:(湘大,XTU,OJ,笔记)