终于给中文题了,感动中国
这道题我属于找规律类型,打个表,发现正解。据说很多人cin超时。
然而正解是考虑哪些位置的a[i]最终为1,最终为1说明此位置被反转了奇数次,即i有奇数个因子,而有且仅有完全平方数有奇数个因子,所以答案为sqrt(n)。小思维题,我还是弱了一点只会找规律。
#include<cstdio>
#include<cstring>
#include<cmath>
#define maxl 100
long long n;
long long ans;
int a[maxl];
int main()
{
long long l,r,mid;
while(~scanf("%lld",&n))
{
l=1,r=sqrt(n);
while(l+1<r)
{
mid=(l+r)>>1;
if(mid*(long long)(mid+(long long)2)>n)
r=mid;
else
l=mid;
}
if(l*(l+2)>=n)
ans=l;
else
ans=l+1;
printf("%d\n",ans);
}
return 0;
}