设为首页 加入收藏

TOP

zoj3629 Treasure Hunt IV
2015-07-20 17:48:26 来源: 作者: 【 】 浏览:14
Tags:zoj3629 Treasure Hunt

?

思路:找规律,发现符合要求的数为

[0,1)

[4,9)

[16,25)

[36,49)

…………

[n^2 , (n+1)^2)

发现 n^2 到(n+1)^2(n为偶数)前开后闭的区间为符合要求的数,然后发现(n+1)*(n+1)-n*n组成的数列为一个差值为4等差数列,我们需要求区间[a,b]符合要求的数,那么只需要用b前面符合要求的数减去a-1中符合要求的数。。。。。

?

开始的时候一直WA,到后才发现输入输出时用的%I64d要换成%lld,悲剧呀。。。。。。

?

code:

#include
  
   
#include
   
     #include
    
      #include
     
       using namespace std; typedef long long LL; LL f(LL x) //计算0到x之间符合要求的数,等差数列首项看为1 { if(x==-1) return 0; LL a=sqrt(x); LL sum=0; if(a*a==x) { LL n=(a+1)/2; sum=n+n*(n-1)*2; if(a%2==0) { sum++; } } else if(a*a
      
       

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UVA - 11927 Games Are Important.. 下一篇uva 1449 - Dominating Patterns(..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言结构体怎么直接 (2025-12-24 17:19:44)
·为什么指针作为c语言 (2025-12-24 17:19:41)
·如何较为深入的理解c (2025-12-24 17:19:38)
·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)