CSUACM月赛 1970

来源:互联网 发布:代理商域名转到阿里云 编辑:程序博客网 时间:2024/06/03 17:50

终于给中文题了,感动中国

这道题我属于找规律类型,打个表,发现正解。据说很多人cin超时。

然而正解是考虑哪些位置的a[i]最终为1,最终为1说明此位置被反转了奇数次,即i有奇数个因子,而有且仅有完全平方数有奇数个因子,所以答案为sqrt(n)。小思维题,我还是弱了一点只会找规律。

#include<cstdio>#include<cstring>#include<cmath>#define maxl 100long 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;elsel=mid;}if(l*(l+2)>=n)ans=l;elseans=l+1;printf("%d\n",ans);}return 0;}


原创粉丝点击