题解 | #游游的整数拆分#

游游的整数拆分

https://ac.nowcoder.com/acm/problem/255369

首先注意到两数乘积是3的倍数至少需要其中一个数的3的倍数,随便列举几个数:

3:无解

4:3+1,1+3

5:3+2,2+3

6:3+3

7:3+4,6+1,4+3,1+6

8:3+5,6+2,5+3,2+6

9:3+6,6+3

发现可以枚举其中一个数是三的倍数的方案,因为另一个数也需要是正整数(至少为1)所以方案数为(n - 1) / 3。然后发现如果n不是3的倍数的话交换a, b方案数乘2,但是如果n是3的倍数会使得交换a, b也是考虑过的方案,所以当n不是3的倍数时答案乘2。

#include<iostream>
using namespace std;
int main() {
    long long n;
    cin >> n;
    long long ans = (n - 1) / 3;
    if (n % 3) ans *= 2;
    cout << ans;
    return 0;
}
全部评论

相关推荐

优秀的大熊猫在okr...:多益:此贼,必有同谋,按律,该当连坐!
你不能接受的企业文化有哪...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务