代码源每日一题 2022-5-9

数学 - 题目 - Daimayuan Online Judge

给定整数 n,胖教授想将1∼n这nn个数字分成两组,每一组至少有一个数,并且使得两组数字的和的最大公约数最大,请输出最大的最大公约数。

输入格式:

一行输入一个n。

输出格式:

输出一个最大的公约数。

数据:

对于20%的数据,保证n≤100。

对于100的数据,保证n≤1e9。

输入样例:

6

输出样例

好了,题目已经看完了,然后就是解题了。

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ÿ

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值