Content

设 \(S_k\) 为直线 \(f(x)=kx+k-1\),直线 \(f(x)=(k+1)x+k\) 与 \(x\) 轴围成的三角形的面积。现在给出 \(t\) 组询问,每组询问给定一个整数 \(n\),求 \(\sum\limits_{i=1}^n S_i\)。结果用分数表示。

数据范围:\(1\leqslant t\leqslant 2\times 10^6.0\leqslant n\leqslant 2\times 10^6\)。

Solution

很简单的一道找规律题目。

我们发现,形如 \(f(x)=kx+k-1\) 的直线都会经过 \((-1,-1)\) 这个点。我们再稍微画几个图就能够发现,题目所要求的东西,无非就是以 \((0,0),(-1,-1)\) 以及最后一个 \(S_i\),也就是 \(S_n\),被约束的后一条直线 \(f(x)=(n+1)x+n\) 与 \(x\) 轴的点为三个顶点的三角形的面积罢了。而且很容易发现,我们的三角形如果以在 \(x\) 轴上的边为底边的话,它的高自然就是 \(1\)。再说,这条 \(x\) 轴上的边也很容易求出来:只需要求 \(f(x)=(n+1)x+n\) 这条直线与 \(x\) 轴的交点,再取个绝对值就好了。我们很容易求出上面所说的那条直线与 \(x\) 的交点为 \((-\dfrac{n}{n+1},0)\)。所以那条底边的长度就是 \(\dfrac{n}{n+1}\)。

因此,这道题目的答案,也就是 \(\sum\limits_{i=1}^nS_i=\begin{cases}0&n=0\\\dfrac{n}{2(n+1)}&n>0\end{cases}\)。注意:

  • \(n=0\) 的时候,显然无法构成一个三角形,因此面积为 \(0\)。
  • 注意约分,直接将分子和分母同时除以它们的最大公约数(也就是 \(\gcd\{n,2(n+1)\}\))就好。

只是一时兴起想做道题目,不意味着正式回归。

但是,请等着我。(本文章原文写于 2020 年 12 月 27 日——笔者注

Code

请注意 \(\textsf{NOI}\) 系列赛事不支持 algorithm 库的 __gcd 函数。建议自己写个 gcd 函数,反正又不难,对吧?

什么,要 gcd 函数?下面:

int gcd(int a, int b) {return !b ? a : gcd(b, a % b);} //数据类型根据实际情况适当调整

下面的是正式的代码,注意直接拿这个代码编译是不会通过的。

#include <bits/stdc++.h>
using namespace std; int t, n; int main() {
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
if(!n) puts("0");
else printf("%d/%d\n", n / gcd(n, 2 * (n + 1)), 2 * (n + 1) / gcd(n, 2 * (n + 1)));
}
return 0;
}

LuoguP7127 「RdOI R1」一次函数(function) 题解的更多相关文章

  1. 「POI2011 R1」Conspiracy

    「POI2011 R1」Conspiracy 解题思路 : 问题转化为,将点集分成两部分,其中一部分恰好组成一个团,其中另一部分恰好组成一个独立集. 观察发现,如果求出了一个解,那么答案最多可以在这个 ...

  2. LOJ #2541. 「PKUWC 2018」猎人杀(容斥 , 期望dp , NTT优化)

    题意 LOJ #2541. 「PKUWC 2018」猎人杀 题解 一道及其巧妙的题 , 参考了一下这位大佬的博客 ... 令 \(\displaystyle A = \sum_{i=1}^{n} w_ ...

  3. LOJ #2540. 「PKUWC 2018」随机算法(概率dp)

    题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...

  4. 「GXOI / GZOI2019」简要题解

    「GXOI / GZOI2019」简要题解 LOJ#3083. 「GXOI / GZOI2019」与或和 https://loj.ac/problem/3083 题意:求一个矩阵的所有子矩阵的与和 和 ...

  5. 【题解】#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT)

    [题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现, ...

  6. 「POJ 3666」Making the Grade 题解(两种做法)

    0前言 感谢yxy童鞋的dp及暴力做法! 1 算法标签 优先队列.dp动态规划+滚动数组优化 2 题目难度 提高/提高+ CF rating:2300 3 题面 「POJ 3666」Making th ...

  7. [LOJ 2022]「AHOI / HNOI2017」队长快跑

    [LOJ 2022]「AHOI / HNOI2017」队长快跑 链接 链接 题解 不难看出,除了影响到起点和终点的射线以外,射线的角度没有意义,因为如果一定要从该射线的射出一侧过去,必然会撞到射线 因 ...

  8. Note -「动态 DP」学习笔记

    目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...

  9. 前端构建工具之gulp(一)「图片压缩」

    前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...

随机推荐

  1. Linux 使用wpa_supplicant手动配置连接wifi

    Linux 使用wpa_supplicant手动配置连接wifi wpa_supplicant 简介 wpa_supplicant是Linux BSD, Mac OSX和Windows的WPA的服务, ...

  2. Nginx nginx: [emerg] using regex "\.php$" requires PCRE library 或 编译nginx错误:make[1]: *** [/pcre//Makefile] Error 127

    nginx: [emerg] using regex "\.php$" requires PCRE library  或 编译nginx错误:make[1]: *** [/pcre ...

  3. 【Python小试】将核酸序列翻译成氨基酸序列

    三联密码表 gencode = { 'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M', 'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT' ...

  4. pyquery解析库的介绍和使用

    ### pyquery的介绍和使用 ## 测试文本 text = ''' <html><head><title>there is money</title&g ...

  5. 强化学习实战 | 自定义Gym环境

    新手的第一个强化学习示例一般都从Open Gym开始.在这些示例中,我们不断地向环境施加动作,并得到观测和奖励,这也是Gym Env的基本用法: state, reward, done, info = ...

  6. day16 Linux三剑客之awk

    day16 Linux三剑客之awk 1.什么是awk,主要作用是什么? 什么是awk,主要作用是什么? awk 主要用来处理文件,将文本按照指定的格式输出.其中包含变量,循环以及数组. 2.awk的 ...

  7. Spark(十一)【SparkSQL的基本使用】

    目录 一. SparkSQL简介 二. 数据模型 三. SparkSQL核心编程 1. IDEA开发SparkSQL 2. SparkSession 创建 关闭 获取SparkContext 3. D ...

  8. eclipse上安装 windowBuilder方法

    最近因为需要用java Swing做一些组件设计,但想想以前在大学时候为了布局组件和位置设计花了很多时间.所以再网上查了一些带有可视化的设计插件用来提高工作效率. 其中一个是 windowBuilde ...

  9. C语言把数字转换为字符串的函数

    博主原文 C语言itoa()函数和atoi()函数详解(整数转字符C实现) C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. 1.int/float to st ...

  10. DBMS_RANDOM包详解

    DBMS_RAMDOM包中一共包含9个存储过程和函数,其中6个是现在用的,3个是已经过时的: 当前版本11gR2 每次生成一个随机数oracle都会初始化一个种子,也可以调用seed过程自己初始化一个 ...