Content

给定 \(t\) 组数据,每组数据给定一个数 \(n\),判断 \(n\) 是否能够分解成连续正整数和,能的话给出最小数最大的方案。

数据范围:\(1\leqslant n\leqslant 10^9\)。

Solution

这道题如果暴力枚举的话,看数据范围就知道肯定会爆炸。因此我们要考虑推式子。

首先,我们设分解后的数列长度为 \(k\),首项为 \(a_1\)。那么显然得到 \(\text{(1)}\) 式:

\(\begin{aligned}n&=\dfrac{(a_1+(a_1+k-1))k}2\\&=\dfrac{(2a_1+k-1)k}2\end{aligned}\)

由于 \(a_1,k>0\),在 \(a_1>0\) 两边同时加上 \(a_1+k-1\) 得:

\[2a_1+k-1>k
\]

然后我们由 \(\text{(1)}\) 式可得 \(2a_1+k-1=\dfrac{2n}{k}\),代入不等式:

\[\begin{aligned}\dfrac{2n}{k}&>k\\k^2&<2n\\k&<\sqrt{2n}\end{aligned}
\]

我们由样例可得 \(k\geqslant 2\)(读者自证不难),又因为 \(k\) 是正整数,所以得到了 \(k\) 的范围为:\(k\in[2,\left\lfloor\sqrt{2n}\right\rfloor]\)。

这样我们就可以考虑通过枚举 \(k\) 来求得答案。现在看 \(a_1\)。

我们还是通过 \(\text{(1)}\) 式求解:

\[\begin{aligned}2a_1+k-1&=\dfrac{2n}k\\2a_1&=\dfrac{2n-k^2+k}k\\a_1&=\dfrac{2n-k^2+k}{2k}\end{aligned}
\]

又因为 \(a_1\) 是正整数,所以只需要判断是否有下列条件成立即可:

  • \(2k\mid(2n-k^2+k)\)。
  • \(\dfrac{2n-k^2+k}{2k}>0\)

枚举出符合条件的方案我们就可以输出了,并且我们算一下不难发现,从 \(2\) 枚举到 \(\left\lfloor\sqrt{2n}\right\rfloor\) 第一个找出来的方案就是题目所要求的最小数最大的方案。注意输出的格式即可。如果枚举完了还是没有找到方案那就直接输出 IMPOSSIBLE 就好。

Code

int main() {
MT {
int n = Rint, flag = 1;
F(len, 2, (int)sqrt(2 * n)) {
if(!((2 * n - len * len + len) % (2 * len)) && (2 * n - len * len + len) / (2 * len) > 0) {
int a1 = (2 * n - len * len + len) / (2 * len);
printf("%d = ", n);
F(i, a1, a1 + len - 1) {
printf("%d ", i);
if(i != a1 + len - 1) printf("+ ");
else puts("");
}
flag = 0; break;
}
}
if(flag) puts("IMPOSSIBLE");
}
return 0;
}

LuoguP4759 [CERC2014]Sums 题解的更多相关文章

  1. [CF1204E]Natasha,Sasha and the Prefix Sums 题解

    前言 本文中的排列指由n个1, m个-1构成的序列中的一种. 题目这么长不吐槽了,但是这确实是一道好题. 题解 DP题话不多说,直接状态/变量/转移. 状态 我们定义f表示"最大prefix ...

  2. CF1656E Equal Tree Sums 题解

    题目链接 思路分析 自认为是一道很好的构造题,但是我并不会做. 看了题解后有一些理解,在这里再梳理一遍巧妙的思路. 我们先来看这样的一张图: 我们发现当去掉叶子节点的父亲时,剩下树的价值和等于叶子节点 ...

  3. CodeForces 223C Partial Sums 多次前缀和

    Partial Sums 题解: 一个数列多次前缀和之后, 对于第i个数来说他的答案就是 ; i <= n; ++i){ ; j <= i; ++j){ b[i] = (b[i] + 1l ...

  4. DP | Luogu P1466 集合 Subset Sums

    题面:P1466 集合 Subset Sums 题解: dpsum=N*(N+1)/2;模型转化为求选若干个数,填满sum/2的空间的方案数,就是背包啦显然如果sum%2!=0是没有答案的,就特判掉F ...

  5. 背包DP 方案数

    题目 1 P1832 A+B Problem(再升级) 题面描述 给定一个正整数n,求将其分解成若干个素数之和的方案总数. 题解 我们可以考虑背包DP实现 背包DP方案数板子题 f[ i ] = f[ ...

  6. 【题解】【数组】【Prefix Sums】【Codility】Genomic Range Query

    A non-empty zero-indexed string S is given. String S consists of N characters from the set of upper- ...

  7. 【题解】【数组】【Prefix Sums】【Codility】Passing Cars

    A non-empty zero-indexed array A consisting of N integers is given. The consecutive elements of arra ...

  8. codechef Sums in a Triangle题解

    Let's consider a triangle of numbers in which a number appears in the first line, two numbers appear ...

  9. 题解——UVA11997 K Smallest Sums

    题面 背景 输入 输出 翻译(渣自翻) 给定K个包含K个数字的表,要求将其能产生的\( k^{k} \)个值中最小的K个输出出来 题解 k路归并问题的经典问题 可以转化为二路归并问题求解 考虑A[], ...

随机推荐

  1. C#中使用protobuf-net进行序列化

    前一篇文章我们看到使用Google.Protobuf有诸多不便(参考<如何在C#中使用Google.Protobuf工具>),这次我们来看看另一个工具的使用体验. 相关资料.链接: git ...

  2. Error occurred during initialization of VM Could not reserve enough space fo

    通过es的elasticsearch.bat 启动.发现错误:Error occurred during initialization of VM Could not reserve enough s ...

  3. Codeforces 715E - Complete the Permutations(第一类斯特林数)

    Codeforces 题面传送门 & 洛谷题面传送门 神仙题.在 AC 此题之前,此题已经在我的任务计划中躺了 5 个月的灰了. 首先考虑这个最短距离是什么东西,有点常识的人(大雾)应该知道, ...

  4. 平衡树 & LCT

    1. 非旋 Treap(FHQ Treap) 1.1. 算法简介 FHQ Treap 的功能非常强大.它涵盖了 Treap 几乎所有的功能 所以我非常后悔学了 Treap,浪费时间. FHQ 的核心思 ...

  5. plink 进行PCA分析

    当我们进行群体遗传分析时,得到vcf后,可利用plink进行主成分(PCA)分析: 一.软件安装 1 conda install plink 二.使用流程 第一步:将vcf转换为plink格式 1 p ...

  6. 【机器学习与R语言】6-线性回归

    目录 1.理解回归 1)简单线性回归 2)普通最小二乘估计 3)相关系数 4)多元线性回归 2.线性回归应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理 ...

  7. 蛋白质组DIA深度学习之谱图预测

    目录 1. 简介 2. 近几年发表的主要工具 1.DeepRT 2.Prosit 3. DIANN 4.DeepDIA 1. 简介 基于串联质谱的蛋白质组学大部分是依赖于数据库(database se ...

  8. 金蝶EAS——登录某个数据中心门户时报错“获取用户相关信息失败!请查看服务器日志,并确认是否数据库设置错误或者版本不匹配!”

    登录服务器后台,查看金蝶BOS控制台,选择数据中心中的目标数据中心,点击测试连接,提示报错如下: 说明是数据库问题,需要登录数据库服务器去检查数据库.详细操作见:

  9. Linux之crond定时任务

    1. 使用crontab工具配置的定时任务 2. 配置定时任务建议规范 3. 定时任务配置问题导致系统出现故障实例 1. 使用crontab工具配置的定时任务 名称 crontab - 维护单个用户的 ...

  10. 15.Pow(x, n)

    Pow(x, n) Total Accepted: 88351 Total Submissions: 317095 Difficulty: Medium Implement pow(x, n). 思路 ...