题解 AT2281 【[ABC051B] Sum of Three Integers】

遇到这种题目,尽管是红题,但也要注意复杂度,O(n3n^3)是过不去的。

那么我们先想想有没有O(n2n^2)的方法。如果已经循环了两层,那么第三层的数加上去要为s,那么第三层的数不就是:

s - 第一层 - 第二层

那么就不用第3层循环了

代码如下:

#include <iostream>
using namespace std;

int main()
{
    int k, s, ans = 0;
    cin >> k >> s;
    for(register int i = 0; i <= k; i++)
    {
        for(register int j = 0; j <= k; j++)
        {
            if(s - i - j <= k && s - i - j >= 0) //注意判断越界
            {
                ans++;
            }
        }
    }
    cout << ans << endl;
    return 0;
}
posted @   HappyBobb  阅读(21)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示