zoukankan      html  css  js  c++  java
  • 2018中国大学生程序设计竞赛

    Find Integer

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 0    Accepted Submission(s): 0
    Special Judge

    Problem Description

    people in USSS love math very much, and there is a famous math problem .

    give you two integers n,a,you are required to find 2 integers b,c such that a^n+b^n=c^n.

    Input

    one line contains one integer T;(1≤T≤1000000)

    next T lines contains two integers n,a;(0≤n≤1000,000,000,3≤a≤40000)

    Output

    print two integers b,c if b,c exits;(1≤b,c≤1000,000,000);

    else print two integers -1 -1 instead.

    Sample Input

    1 2 3

    Sample Output

    4 5

    由费马大定理知n>=3时必然无解,因此只需讨论n==2的情况

    参见:http://tieba.baidu.com/p/108936816

    code:

    #include<bits/stdc++.h>
    #include<stdio.h>
    #include<iostream>
    #include<cmath>
    #include<math.h>
    #include<queue>
    #include<set>
    #include<map>
    #include<iomanip>
    #include<algorithm>
    #include<stack>
    #define inf 0x3f3f3f3f
    using namespace std;
    typedef long long ll;
    ll b[40005];
    ll c[40005];
    int id=1;
    ll num[10005];
    void init()
    {
        for(ll aa=3;aa<=40000;aa++)
        {
            if(aa%2)
            {
                b[aa]=(aa/2)*(aa/2)+(aa/2+1)*(aa/2+1)-1;
                c[aa]=(aa/2)*(aa/2)+(aa/2+1)*(aa/2+1);
            }
            else
            {
                b[aa]=(aa/2)*(aa/2)-1;
                c[aa]=(aa/2)*(aa/2)+1;
            }
        }
    }
    int main()
    {
    #ifndef ONLINE_JUDGE
        //freopen("in.txt","r",stdin);
    #endif // ONLIN
    init();
    
        int t;
        cin>>t;
        ll a,n;
        while(t--)
        {
            scanf("%lld%lld",&n,&a);
            if(n>=3)
            {
                printf("-1 -1
    ");continue;
            }
            else if(n==0)
            {
               printf("-1 -1
    ");
            }
            else if(n==1)
            {
                printf("1 %lld
    ",a+1);
            }
            else if(n==2)
            {
                printf("%lld %lld
    ",b[a],c[a]);
            }
        }
    
    return 0;
    }
  • 相关阅读:
    聚合物钽电容和普通钽电容的区别
    Java命令:Jstack
    计算并发用户数的五种方法
    LoadRunner脚本优化-加密与解密
    如何定位性能瓶颈
    loadrunner配置多台负载机设置
    nmon监控及简要分析
    Web系统大规模并发——电商秒杀与抢购
    大型网站的灵魂——性能
    mycat实战之性能测试
  • 原文地址:https://www.cnblogs.com/linruier/p/9535512.html
Copyright © 2011-2022 走看看