题意:求从1开始的第n个非平方数以及图中公式
Historyrepeatitself
TimeLimit:2000/1000MS(Java/Others)MemoryLimit:32768/32768K(Java/Others)
TotalSubmission(s):875AcceptedSubmission(s):313
ProblemDescription
TomtooktheDiscreteMathematicscourseinthe2011,buthisbadattendanceangeredProfessorLeewhoisinchargeofthecourse.Therefore,ProfessorLeedecidedtoletTomfaceahardprobabilityproblem,andannouncedthatifhefailtoslovetheproblemtherewouldbenowayforTomtopassthefinalexam.
Asaresult,Tompassed.
Historyrepeatitself.You,thebadboy,alsoangeredtheProfessorLeewhenSeptemberEnds.Youhavetofacedtheproblemtoo.
TheproblemcomesthatYoumustfindtheN-thpositivenon-squarenumberMandprintedit.Andthat'sfornormalbadstudent,suchasTom.Buttherealbadstudenthastocalculatetheformulabelow.
So,thatyoucanreallyunderstandWHATABADSTUDENTYOUARE!!
Input
Thereisanumber(T)inthefirstline,tellyouthenumberoftestcasesbelow.ForthenextTlines,thereisjustonenumberontheeachlinewhichtellyoutheNofthecase.
Tosimplifiedtheproblem,TheNwillbewithin231andmorethen0.
Output
Foreachtestcase,printtheN-thnonsquarenumberandtheresultoftheformula.
SampleInput
4
1
3
6
10
SampleOutput
22
57
813
1328
/*假如让求第n个非平方数的话,看n前面有多少个平方数,假设有x个,则第n个非平方数就是n+x
则有 sqrt(n+x)=x x>根号n 之后暴力
对于第二个式子 由于下取整,所以每两个平方数之间的数的sqrt(i),都等于前面的那个平方数,
这样就很好计算了,一段一段的算
*/
#include <stdio.h>
#include <math.h>
int main()
{
__int64 i,m,n,tt;
__int64 x;
__int64 s;
while(scanf("%I64d",&m)!=EOF)
{
while(m--)
{
scanf("%I64d",&n);
i=(__int64)sqrt(n*1.0);
while((__int64)sqrt((n+i)*1.0)!=i)//这里必须要乘1.0 否则编译错误
{
i++;
}
x=n+i;
n=n+i;
tt=(__int64)(sqrt(x*1.0));
s=0;
for(i=2;i<=tt;i++)
{
s=s+(i*i-(i-1)*(i-1))*(i-1);//从i*i到 (i-1)*(i-1)的数 开方后向下取整 均为i-1
}
s=s+(x-tt*tt+1)*tt;
printf("%I64d %I64d\n",n,s);
}
}
return 0;
}
分享到:
相关推荐
ACM HDU 题目分类 ACM HDU 题目分类是指对 HDU 在线判题系统中...1030 简单题,可用模拟过 等等。 ACM HDU 题目分类是一个非常重要的参考资源,对于编程选手来说,掌握这些分类可以帮助他们更好地理解和解决问题。
HDU(杭州电子科技大学在线评测系统)是一个深受程序员喜爱的在线编程练习平台,它提供了丰富的算法题目供用户挑战,帮助他们提升编程技能和算法理解能力。"hdu.rar_hdu"这个压缩包文件很可能是某位程序员整理的他在...
"hdu"可能是指杭州电子科技大学(Hangzhou Dianzi University),这所学校经常举办ACM编程竞赛,并有自己的在线判题系统——HDU Online Judge,供参赛者提交代码并测试解决方案。 【压缩包子文件的文件名称列表】中...
【标题】"HDU题目java实现"所涉及的知识点主要集中在使用Java编程语言解决杭州电子科技大学(HDU)在线评测系统中的算法问题。HDU是一个知名的在线编程竞赛平台,它提供了大量的算法题目供参赛者练习和提交解决方案...
本题(hdu1250)主要考察的就是如何通过编程实现高精度加法,并解决一个特定的数学问题。 #### 题目解析 根据题目描述,该题目编号为HDU1250,其核心在于利用高精度加法解决问题。具体地,题目涉及到了斐波那契数列...
【描述】提到的"HDU的一题"可能是指HDU(杭州电子科技大学)在线判题系统中的一道动态规划题目。这个系统经常被用来举办各类编程竞赛,包括ACM/ICPC(国际大学生程序设计竞赛)等。描述中的省略部分可能包含了具体...
HDU1059的代码
hdu1001解题报告
hdu 1574 passed sorce
【标签】"ACM题解 HDU"意味着这是一个关于如何解答HDU ACM题目的资源,可能包含了解题思路、算法解析、代码实现等方面的内容。这样的资料对于准备ACM比赛的选手或者希望提升算法能力的程序员来说非常有价值。 在...
【标题】"hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj" 提供的信息是关于一个压缩文件,其中包含了一个名为 "HDU 1089.cpp" 的源代码文件,这个文件是为了解决杭州电子科技大学(Hangzhou Dianzi ...
hdu2101AC代码
模拟竞赛是提高实战能力的有效方式,通过参与在线判题平台(如HDU OJ)的练习,可以锻炼快速阅读题目、理解和解决问题的能力。同时,ACM竞赛强调团队协作,学习如何与队友有效沟通,分工合作,共同解决问题,也是...
【标题】:杭电ACMhdu1163 【描述】:这是一道源自杭州电子科技大学(Hangzhou Dianzi University,简称HDU)的ACM编程竞赛题目,编号为1163。这类问题通常需要参赛者利用计算机编程解决数学、逻辑或算法上的挑战,...
hdu 5007 Post Robot 字符串枚举。 暴力一下就可以了。
标题"HDu1000—2169部分代码"可能指的是作者在HDU OJ上解决了一系列题目,从1000号题到2169号题的部分代码。这通常意味着这些代码是用于解决特定算法问题的,并且这些提交已经被平台验证为正确,成功地通过了所有...
hdu 1166线段树代码
HDU(Hangzhou Dianzi University)是国内外知名的在线编程竞赛平台,主要服务于ACM/ICPC(国际大学生程序设计竞赛)以及相关的算法训练。"HDU最全ac代码"这个压缩包很可能是包含了在HDU平台上解题通过的完整源代码...
根据提供的信息,我们可以总结出以下关于“hdu动态规划算法集锦”的知识点: ### 动态规划基础概念 动态规划是一种解决多阶段决策问题的方法,它通过将原问题分解为互相重叠的子问题,利用子问题的解来构建原问题...
Hdu 1237 解题代码