zoukankan      html  css  js  c++  java
  • 题解 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;
    }
    
  • 相关阅读:
    05数组 字符串数组 多维数组
    android textView的渐入效果
    android颜色表
    ExpandableListView置顶和子list收放
    Adb not responding
    android 一个TextView设置多种颜色
    android 循环操作
    Android异步更新
    android 水波纹
    Android 推门效果
  • 原文地址:https://www.cnblogs.com/tearing/p/12376409.html
Copyright © 2011-2022 走看看