/** * Sum Problem * 简单题,使用高斯求和公式求和即可,注意避免中间计算结果溢出就OK. */ public class Problem1001 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n; while (scanner.hasNext()) { n = scanner.nextInt(); int x = 1 + n; /** * 根据高斯求和公式求解即可(1 + n) * n / 2; * 不过要注意,题目中虽然保证了结果在32bit符号整数范围内 * 但是使用高斯求和公式的过程中可能会溢出(乘法),所以不能直接使用 * 公式的计算顺序;因为整型运算是向0舍入的(3 / 2 == 1),所以为了避免 * 改变公式顺序带来的错误,需要对除以2的参数进行奇偶判定 */ if (n % 2 == 0) System.out.println((n >> 1) * x); // n >> 1表示将n右移一位等价n / 2 (下同) else System.out.println((x >> 1) * n); // 题目要求的blank line System.out.println(); } } }
HDOJ 1001 Sum Problem
最新推荐文章于 2021-03-19 23:09:40 发布
本文介绍了一道简单的编程题,通过使用高斯求和公式来解决整数序列的求和问题。为避免计算过程中可能出现的溢出问题,文中提供了一种巧妙的方法,并通过条件判断实现了正确计算。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
GPT-SoVITS
AI应用
GPT-SoVITS 是一个开源的文本到语音(TTS)和语音转换模型,它结合了 GPT 的生成能力和 SoVITS 的语音转换技术。该项目以其强大的声音克隆能力而闻名,仅需少量语音样本(如5秒)即可实现高质量的即时语音合成,也可通过更长的音频(如1分钟)进行微调以获得更逼真的效果
361

被折叠的 条评论
为什么被折叠?



