zoukankan      html  css  js  c++  java
  • 1080 两个数的平方和 分类: 51nod 2015-07-20 22:20 11人阅读 评论(0) 收藏

    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题

    收藏

    关注

    给出一个整数N,将N表示为2个整数i j的平方和(i <= j),如果有多种表示,按照i的递增序输出。

    例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2 (注:3 11同11 3算1种)

    Input
    一个数N(1 <= N <= 10^9)

    Output
    共K行:每行2个数,i j,表示N = i^2 + j^2(0 <= i <= j)。
    如果无法分解为2个数的平方和,则输出No Solution

    Input示例
    130

    Output示例
    3 11
    7 9
    这道题本渣认为自己的解法是比较简单且粗暴的,先将10^9内的平方数用数组存起来,然后再遍历,寻找两个刚好能组成N的平方数,再输出来

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    #define N 33333
    using namespace std;
    __int64 f[N];
    int main()
    {
         for(int i=0;i<=N;i++)
         {
            f[i]=i*i;
         }
         __int64 n;
         while(scanf("%lld",&n)!=EOF)
         {
           int i,j;
           int flag=0,flag1=0;
           int cnt=N,cnt1=0;
           for(int i=0;i<N;i++)
           {
            __int64 ans=n-f[i];
            for(int j=cnt;j>=i;j--)
            {
                if(ans==f[j])
                {
                    flag=1;
                    printf("%d %d
    ",i,j);
                    cnt=j;
                    break;
                }
            }
            if(i>cnt)
            break;
           }
           if(flag==0)
           printf("No Solution
    ");
       }
       return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    前端开发Code Review内容【vue记录】
    Blue Jeans
    Arbitrage
    Common Subsequence
    Palindrome
    Stockbroker Grapevine
    Asteroids
    Frogger
    All in All
    Highways
  • 原文地址:https://www.cnblogs.com/NaCl/p/4700589.html
Copyright © 2011-2022 走看看