题解 AT5632 Sum of Two Integers

Posted tearing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解 AT5632 Sum of Two Integers相关的知识,希望对你有一定的参考价值。

在幼儿园的时候,我们就学习过把一个数分成(a)(b),我们只需要用计算机来模拟这个过程就可以了。

我们先从奇数开始看起,以(5)为例:

技术图片

我们可以发现,(5)可以分成(1)(4)(2)(3)(3)(2),以及(4)(1),也就是说,一个奇数可以有(n-1)种方法进行分解,去重后也就是((n-1)div2)种方法。

可以在举一个例子,如(7),它可以分成(1)(6)(2)(5)(3)(4)(4)(3)(5)(2)(6)(1),去重后就是(1)(6)(2)(5)(3)(4),共(3)种,再用刚刚推出的公式,((7-1) div 2 = 3),发现公式是正确的。

再看偶数,在这里以(4)为例。

技术图片

我们可以发现,一共有(3)种方法可以将(4)分解,和奇数一样,也有(n-1)种方案,其中,(2)(2)是重复的,去掉,(3)(1)也是重复的,去掉。因此我们发现,(4)只有(1)(3)一种分解方法,可以用((n-1)div2)的方法判断。

最后我们发现,他们的公式都一样,所以可以直接套公式。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    cout<<(n-1)/2;
    return 0;
}

以上是关于题解 AT5632 Sum of Two Integers的主要内容,如果未能解决你的问题,请参考以下文章

01Two Sum题解

#Leetcode# 599. Minimum Index Sum of Two Lists

371. Sum of Two Integers

[LeetCode] 599. Minimum Index Sum of Two Lists

371. Sum of Two Integers

LeetCode 371. Sum of Two Integers