输入一个奇数,使得 n*(2*a+n-1)/2是一个完全平方数,求满足条件的最小的a
先输入样例数,再输入n
2
1
3
0
2
#include<stdio.h>
#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还是要做的,毕竟马上就要考试了
想了一上午,感觉理解的差不多了,但是自己写还是出现奇怪的错误,一点心态都没有了
主要是有疑问解决不了,自己也没有那股钻研的劲头,也不知道该请教谁
首先根据题意求和,得到题意里面说的式子。
式子的化简如图