Problem K: 三角形数
发布日期:2021-05-20 06:37:06 浏览次数:12 分类:精选文章

本文共 599 字,大约阅读时间需要 1 分钟。

三角形数是能够排列成等边三角形的点数,例如1个点构成第一个三角形,3个点构成第二个,以此类推。第n个三角形数可以通过公式n(n+1)/2计算得到。对于给定的k值,我可以通过判断k的奇偶性来决定使用不同的公式计算。如果k是偶数,结果是(k/2)(k+1);如果k是奇数,结果是(k+1)/2k。

为了满足题目的需求,我编写了一个程序来处理多个输入查询,每次计算并输出第k个三角形数。程序使用unsigned long long来存储结果,确保精度和范围。

以下是代码示例:

#include 
int main() { unsigned long long k; while (scanf("%llu", &k) != EOF) { if (k % 2 == 0) { printf("%llu\n", (k / 2) * (k + 1)); } else { printf("%llu\n", ((k + 1) / 2) * k); } } return 0;}

代码的实现逻辑:

  • 包含必要的头文件。
  • 使用unsigned long long来保证不溢出。
  • 使用循环读取每个k的值。
  • 根据k的奇偶性选择相应计算方法。
  • 输出结果。
  • 这个解决方案快速且高效,满足题目的要求。

    上一篇:Problem M: 有多少个0
    下一篇:Problem F: 递归倒排字符串

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月30日 10时40分29秒