Codeforces 1327A: Sum of Odd Integers
Codeforces C++ 一解.
分析
本题需要对任意的 $n$ 确认其能否表示成各不相同的正奇数之和. 标有 “math” tag 的题目往往只需要很简短的代码就可以实现. 注意到从 1 开始的前 $k$ 个奇数之和为
$$
\sum_{i=1}^{k}(2i-1)=\frac{(1+(2k-1))*k}{2}=k^2.
$$
所以很自然地, $n<k^2$ 时显然不可能表示出来. 再考虑奇偶性, 显然 $n$ 和 $k$ 的奇偶性不同时也是无法表示的.
那剩下的数字怎么办? 这里需要用到数学竞赛中经常使用的构造特例的方法: 构造下列奇数列 $1,3,5,\cdots,2(k-1)-1,r$, 其中 $r=n-1-3-5-\cdots-(2(k-1)-1)$. 首先容易得到 $n\geq k^2$ 所以 $r>2(k-1)-1$; 再者, $n$ 减去 $k-1$ 个奇数, 在 $n$ 和 $k$ 奇偶性相同时, 其结果一定是奇数. 这就说明对于其他情况, 一定存在这样的表示方式.
综上, 我们只需要对 $n$ 的大小以及 $n$ 与 $k$ 的奇偶性做判断就可以了.
代码
1 |
|
Codeforces 1327A: Sum of Odd Integers
# Related Posts
1.Codeforces 1324B: Yet Another Palindrome Problem
2.Codeforces 363B: Fence & Rust for Competitive Programming
3.LeetCode Problem 3: Longest Substring Without Repeating Characters
4.【文件格式探究】EP.2 WAV 音频文件格式
5.Codeforces 1399D: Binary String to Subsequences
6.Codeforces 1368B: Codeforces Subsequences
7.Codeforces 1430C: Numbers on Whiteboard
8.Codeforces 1419D1: Sage's Birthday (easy version)
1.Codeforces 1324B: Yet Another Palindrome Problem
2.Codeforces 363B: Fence & Rust for Competitive Programming
3.LeetCode Problem 3: Longest Substring Without Repeating Characters
4.【文件格式探究】EP.2 WAV 音频文件格式
5.Codeforces 1399D: Binary String to Subsequences
6.Codeforces 1368B: Codeforces Subsequences
7.Codeforces 1430C: Numbers on Whiteboard
8.Codeforces 1419D1: Sage's Birthday (easy version)
# Recommend Posts
1.【ACG音乐分享】Ceui《今、歩き出す君へ》
2.使用 GPG 加密、解密和验证信息
3.【翻译】如何编写 Git 提交消息
4.Linux 时间操作及其同步
5.【实测】Python 和 C++ 下字符串查找的速度对比
6.Codeforces 1312B: Bogosort
1.【ACG音乐分享】Ceui《今、歩き出す君へ》
2.使用 GPG 加密、解密和验证信息
3.【翻译】如何编写 Git 提交消息
4.Linux 时间操作及其同步
5.【实测】Python 和 C++ 下字符串查找的速度对比
6.Codeforces 1312B: Bogosort