• 1080 两个数的平方和


    基准时间限制: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

    简单的数学问题 开始无脑暴力T了一发,如图:

    喵喵喵???只卡我一组数据???吓得我赶紧花了五个点头盾去写了个特判...

    呸!你ACMer的脸还要不要了!!

    我们可以设t^2=n,那么由此我们可以看出i和j一定是不大于t的,所以我们遍历到sqrt(n)即可,

    当然,我们也不能无脑遍历,当我们知道i时便可由j^2=(n-i^2)来求得j,此外,i也不会大于j.

    附AC代码:

     1 #include<iostream>
     2 #include<cmath>
     3 using namespace std;
     4 
     5 int main(){
     6     int n;
     7     cin>>n;
     8     int ans=0;
     9     int t=sqrt(n);
    10     for(int i=0;i<=t;i++){
    11         int j=sqrt(n-i*i);
    12         if(j*j+i*i==n&&j>=i){
    13             ans++;
    14             cout<<i<<" "<<j<<endl;
    15         }
    16     }
    17     if(ans==0)
    18     cout<<"No Solution"<<endl;
    19     return 0;
    20 }
  • 相关阅读:
    WebServce之Map类型传输
    WebService之跨域
    WebServce之拦截器
    Webservice之发布
    JAVA之ElasticSearch
    MonogoDb学习笔记
    DotNetCore自带Ioc使用程序集名称注入
    生产者与消费者
    哈希算法-Time33
    线程安全的集合操作类
  • 原文地址:https://www.cnblogs.com/Kiven5197/p/5781814.html
Copyright © 2020-2023  润新知