zoukankan      html  css  js  c++  java
  • 蓝桥杯 大数定理

    标题:四方定理

    数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。

    我们可以通过计算机验证其在有限范围的正确性。

    对于大数,简单的循环嵌套是不适宜的。下面的代码给出了一种分解方案。

    #include<stdio.h>
    #include<math.h>
    int f(int n,int a[],int idx){
        if(n==0)    return 1;        //恰好等于 0,则说明恰好等于某几位的平方和 
        if(idx==4)    return 0;        //超过四位数字 返回 0,不符合要求 
        for(int i=(int)sqrt(n);i>=1;i--){
            a[idx]=i;
            if(f(n-i*i,a,idx+1))    //满足要求 
            return 1;                //在这个地方正式退出程序 
        }
        return 0; //没有满足要求的数字和 
    }
    int main(){
        for(;;){
            int number;
            scanf("%d",&number);
            int a[]={0,0,0,0};        //初始化数组全部为0 
            int r=f(number,a,0);
            printf("%d:%d %d %d %d",r,a[0],a[1],a[2],a[3]);
        }
        return 0;
    } 
  • 相关阅读:
    MySQL系列(三) MySQL的约束
    mysql 下载 国内 镜像
    ckeditor
    比较时间
    远程获取文件
    多线程一例
    requests
    json传递对象字典
    pymysql和mysqldb的区别
    sql
  • 原文地址:https://www.cnblogs.com/sky-z/p/4415035.html
Copyright © 2011-2022 走看看