zoukankan      html  css  js  c++  java
  • 数学--数论--Find Integer(勾股数定理)

    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 an+bn=cn.
    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
    

    Source

    2018中国大学生程序设计竞赛 - 网络选拔赛
    

    勾股数定理详解

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N = 1010;
    int main()
    {
    	int t;
    	scanf("%d", &t);
    	while (t--)
    	{
    		ll a, n;
    		scanf("%lld%lld", &n, &a);
    		if (n > 2 || n == 0)
    			printf("-1 -1
    ");
    		else
    		{
    			ll b, c, s;
    			if (n == 1)
    				printf("1 %lld
    ", a + 1);
    			else if (n == 2)
    			{
    				if (a % 2 == 1)
    				{
    					b = a * a / 2;
    					c = b + 1;
    				}
    				else
    				{
    					s = a * a / 2;
    					b = s / 2 - 1;
    					c = s / 2 + 1;
    				}
    				printf("%lld %lld
    ", b, c);
    			}
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    Majority Element
    Longest Increasing Subsequence
    Count Primes
    Valid Parentheses
    Largest Rectangle in Histogram
    Linked List Cycle II
    Linked List Cycle
    Evaluate Reverse Polish Notation
    Longest Valid Parentheses
    适配总结
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12798444.html
Copyright © 2011-2022 走看看