520 钻石争霸赛 7-5 大勾股定理 (循环)

520 钻石争霸赛 7-5 大勾股定理 (循环)
基本思路:
这道题暴力拿到14分并不难,根据题意模拟即可,具体代码在下面。
至于最后一个测试点超时的问题,我暂时的想法是用两个数组记录前n+1和前n个数字的各平方之和,这样在循环查值的时候就可以省去了很多重复计算。因为还没有教育超市还没有开通重现,所以暂时验证不了我的想法啦~

参考代码(14分):

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll num[100005];

int main()
{
    for(int i = 1; i <= 50000; i++)
        num[i] = i*i;
    int n;
    cin >> n;
    int res, i = 0;
    int l, r;
    
    while(1)
    {
        l = 0, r = 0;
        for(int j = 1; j <= n+1; j++)
            l += num[i+j-1];
        for(int j = i+n+1; j <= i+n+n; j++)
            r += num[j];
        if(l == r)
        {
            res = i;
            break;
        }
        i++;
    }
    
    for(int i = 1; i <= n+1; i++)
    {
        if(i > 1)
            printf(" + ");
        printf("%d^2", res+i-1);
    }
    printf(" =\n");
    for(int i = 1; i <= n; i++)
    {
        if(i > 1)
            printf(" + ");
        printf("%d^2", res+n+i);
    }
    return 0;
}
上一篇:520 单身福利|女朋友又找我要礼物


下一篇:520没脱单,521还没脱单?!那就准备点图片,独自过节!