• 第七届蓝桥杯省赛CC++B组题目之四平方和


    第一部分:题目

    四平方和

    四平方和定理,又称为拉格朗日定理:
    每个正整数都可以表示为至多4个正整数的平方和。
    如果把0包括进去,就正好可以表示为4个数的平方和。

    比如:
    5 = 0^2 + 0^2 + 1^2 + 2^2
    7 = 1^2 + 1^2 + 1^2 + 2^2
    (^符号表示乘方的意思)

    对于一个给定的正整数,可能存在多种平方和的表示法。
    要求你对4个数排序:
    0 <= a <= b <= c <= d
    并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法

    程序输入为一个正整数N (N<5000000)
    要求输出4个非负整数,按从小到大排序,中间用空格分开


    例如,输入:
    5
    则程序应该输出:
    0 0 1 2

    再例如,输入:
    12
    则程序应该输出:
    0 2 2 2

    再例如,输入:
    773535
    则程序应该输出:
    1 1 267 838

    资源约定:
    峰值内存消耗 < 256M
    CPU消耗  < 3000ms

    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

    注意: main函数需要返回0
    注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
    注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

    提交时,注意选择所期望的编译器类型。

    第二部分:思路

    用4个for循环嵌套枚举,当满足等式 N=a*a+b*b+c*c+d*d 时输出然后结束即可。

    第三部分:代码

     

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int n,a,b,c,d,sum=0;
        scanf("%d",&n);
        for(a=0;a<3000;a++)//N<5000000,所以a,b,c,d肯定<3000.
        {
            for(b=a;b<3000;b++)
            {
                for(c=b;c<3000;c++)//当a,b,c都确定时,利用公式计算d,然后判断是否满足a*a+b*b+c*c+d*d=n.
                {
                    d=sqrt(n-a*a-b*b-c*c);  //因为d为int型,所以只是右边式子的整数部分。这就是为什么需要判断的原因                 
                    if(a*a+b*b+c*c+d*d==n)
                    {
                        printf("%d %d %d %d
    ",a,b,c,d);
                        return 0;
                    }
                }
            }
        }
    }
  • 相关阅读:
    Educational Codeforces Round 10 C. Foe Pairs 水题
    Educational Codeforces Round 10 B. z-sort 构造
    CDOJ 1048 Bob's vector 三分
    Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
    第14届电子科大初赛民间盗版部分题目题解
    HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数
    HDU 5653 Bomber Man wants to bomb an Array. dp
    HDU 5652 India and China Origins 二分+并查集
    HDU 5651 xiaoxin juju needs help 数学
    HDU 5650 so easy 数学
  • 原文地址:https://www.cnblogs.com/xiangguoguo/p/5340706.html
Copyright © 2020-2023  润新知