zoukankan      html  css  js  c++  java
  • 阅兵方阵

    x国要参加同盟阅兵活动。
    主办方要求每个加盟国派出的士兵恰好能组成 2 个方阵。
    x国发现弱小的 y国派出了130人的队伍,他们的士兵在行进中可以变换2种队形:
    130 = 81 + 49 = 9^2 + 7^2
    130 = 121 + 9 = 11^2 + 3^2

    x国君很受刺激,觉得x国面积是y国的6倍,理应变出更多队形。
    于是他发号施令:
    我们要派出一支队伍,在行进中要变出 12 种队形!!!

    手下人可惨了,要忙着计算至少多少人才能组成 12 种不同的双方阵。
    请你利用计算机的优势来计算一下,至少需要多少士兵。

    (ps: 不要失去信心,1105人就能组成4种队形了)

    注意,需要提交的是一个整数,表示至少需要士兵数目,不要填写任何多余的内容。

    答案:

    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    
    using namespace std;
    int num[2000000],m = 2000000;
    int main() {
        for(int i = 1;i < 1000;i ++) {
            for(int j = i;j < 1000;j ++) {
                int d = i * i + j * j;
                num[d] ++;
                if(num[d] >= 12) m = min(m,d);
            }
        }
        printf("%d
    ",m);
        for(int i = 1;i * i * 2 <= m;i ++) {
            int d = (int)sqrt(m - i * i);
            if(d * d == m - i * i) {
                printf("%d^2 + %d^2 = %d
    ",i,d,i * i + d * d);
            }
        }
    }
  • 相关阅读:
    离线缓存之RNCachingURLProtocol解析
    Element demo解析
    GHUnit+OCMock
    XCTest+XCTool
    day1`4整理
    day4 笔记
    day3
    day1
    day2
    Python学习(二)——Python基础
  • 原文地址:https://www.cnblogs.com/8023spz/p/10778468.html
Copyright © 2011-2022 走看看