题解 AT5632 【Sum of Two Integers】
2024-09-06 20:05:59
在幼儿园的时候,我们就学习过把一个数分成\(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;
}
最新文章
- ORACLE十进制与十六进制的转换
- java生成4个不同的随机数
- C# 将日期转换成中文格式
- 菜鸟学习HTML5+CSS3(一)
- UVALive - 3713 Astronauts
- initrd.gz的解压和制作
- poj1284:欧拉函数+原根
- python之简单入门01
- mongoexport导出数据
- vhd镜像格式及vhd-util工具应用
- js的变量声明以及变量提升
- linux下svn用法
- 《你必须掌握的Entity Framework 6.x与Core 2.0》正式出版感想
- C# 在webapi项目中配置Swagger
- SpringBoot 多数据源分布式事务
- 一个Monkey测试的小坑
- Python *Mix_w2
- git hub 第一篇
- vue - @click 用到的修饰符
- 检索 COM 类工厂中 CLSID 为 {00021A20-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80080005