摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2058【题意】给出n 和m , 输出 从1。。。n 的n个数字中 相加为m的子区间段【思路】这里就是一个等差序列 用公式 sn=a1*n + (n-1)*n/2 已知sn枚举长度就可以算出 a1了 式子变形算出的a1是整数就可以直接输出结果了在这里我貌似想多了 因为算出的结果是一个double型 直接强制类型转化为int型 要是 1.999999 不就转化为了 1 而不是2了 所以这里我又分了两种情况考虑 但是提交上去时有一个地方写错了 使得没有进入第二个分支的情况 这样也ac了难道这些都不用考虑的吗记录几个 阅读全文
posted @ 2014-03-19 16:30 galaxy77 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 这题可以直接用十六进制输入,然后进行十六进制的运算(其实不管是什么进制,在计算机中都是以二进制来计算的,只是按输入输出的格式不同,而强制转化为其它的进制),就像十进制的加法一样。这里要注意的是输入小于15位,结果超过了二进制中的32位而小于64位。所以这里用__int64的类型。输入输入出格式就是(%I64x,%I64X)。由于%I64X,不能输出负数,所以负数的输出要做处理。 1 #include 2 3 int main(){ 4 __int64 a,b; 5 int flag; 6 while(~scanf("%I64X%I64X",&a,&b)) / 阅读全文
posted @ 2014-03-19 15:32 galaxy77 阅读(229) 评论(0) 推荐(0) 编辑