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);
            }
        }
    }
  • 相关阅读:
    C++中substr函数的用法
    最小生成树-克鲁斯卡尔模板
    最小生成树-prim算法模板
    1064. 朋友数(20)
    1076. Wifi密码 (15)【模拟】
    二分搜索与二分答案
    HDU 1969 Pie【二分】
    1047. 编程团体赛(20)
    1057. 数零壹(20)
    L2-3. 悄悄关注【STL+结构体排序】
  • 原文地址:https://www.cnblogs.com/8023spz/p/10778468.html
Copyright © 2011-2022 走看看