数学 - 题目 - Daimayuan Online Judge
给定整数 n,胖教授想将1∼n这nn个数字分成两组,每一组至少有一个数,并且使得两组数字的和的最大公约数最大,请输出最大的最大公约数。
输入格式:
一行输入一个n。
输出格式:
输出一个最大的公约数。
数据:
对于20%的数据,保证n≤100。
对于100的数据,保证n≤1e9。
输入样例:
6
输出样例
7
好了,题目已经看完了,然后就是解题了。
1:我们先来转化题意因为题目是1~n分成俩组数据,那1~ 1 + 2 + 3 +....+n之间的任何一个数都可能被分成一组,然后其余的数就是在另外一组。
也就是说我们先设sum为1~n的和。 分成俩组就理解成把sum分解成x,sum-x,这俩个数,x可以是1~sum的任何一个数。然后让我们求x , sum - x的最大的公约数的值。那再转化成一个更容易理解的东西,也就是说最少把sum整分成几份。
2:题目意思转换完成之后,题目就变得十分简单,那就是说看sum最小可以整除几(iÿ