【2018CCPC网络赛 1004】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

题意:

本题是Special Judge,共有T组数据,每组数据给出n和a,让我们找到一个符合an+bn=cn的b和c,若不存在输出-1 -1。

思路:

(1) 根据费马大定理可知:当整数n >2时,关于a, b, c的方程 a^n + b^n = c^n 没有正整数解,所以只需讨论n≤2的情况。

(2) 当n=0时,会得到等式1+1=1,显然不可能。

(3) 当n=1时,会得到等式a+b=c,输出符合条件的数据即可。

(4) 当n=2时:

<1> 当a>=3且a=2*x+1(a为奇数,x为正整数)时,b=2x2+2x,c=2x2+2x+1。

<2> 当a>4且a=2*x(a为偶数,x为正整数)时,b=x2-1,c=x2+1。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t,n,a,x;
    cin>>t;
    while(t--)
    {
        scanf("%d%d",&n,&a);
        if(n==1)
            printf("%d %d\n",1,a+1);
        else if(n>2||!n)
        printf("-1 -1\n");
        else
        {
            if(a%2==1)
            {
                x=(a-1)/2;
                printf("%d %d\n",2*x*x+2*x,2*x*x+2*x+1);
            }
            else if(a%2==0)
            {
                x=a/2;
                printf("%d %d\n",x*x-1,x*x+1);
            }
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/kannyi/p/9567564.html

时间: 2024-08-27 01:44:36

【2018CCPC网络赛 1004】Find Integer(勾股数+费马大定理)的相关文章

2018 CCPC网络赛 Dream&amp;&amp;Find Integer

首先这场比赛打得很难受,因为是第一次打网络赛而且也是比较菜的那种,所以对这场网络赛还是挺期待和紧张的,但是在做题的过程中,主要的压力不是来自于题目,更多的来自于莫干山...从12.40-2.00所有的题目都不判了,中间也就写了1003和1004但是都不知道结果就很难受, 然后一直不判就已经没什么看其他题的兴趣了,然后上床休息了一会,直到说杭电的评测机好了,之后才上去继续做题.然后..一直在写1001和1009..后面也没有写出来..直到比赛结束 首先说下1004 签到题竟然写了这么久,而且用了c

hdu6440 Dream 2018CCPC网络赛C 费马小定理+构造

题目传送门 题目大意: 给定一个素数p,让你重载加法运算和乘法运算,使(m+n)p=mp+np,并且 存在一个小于p的q,使集合{qk|0<k<p,k∈Z} 等于集合{k|0<k<p,k∈Z}. 然后输出两个矩阵,第一个矩阵输出i+j的值,第二个矩阵输出i*j的值.(题意好难懂,你们怎么都看懂了!!) 思路: 由费马小定理得到,当p是质数的时候,ap-1 ≡ 1(mod p),两边同乘以a,也就是说当ap和a在取模p的时候相等 所以(m+n)p=m+n=mp+np(乘法为x*x%p

网络赛 1004

1 #include<bits/stdc++.h> 2 using namespace std; 3 #define rep(i,a,b) for(int i=a;i<=b;++i) 4 #define ms(arr,a) memset(arr,a,sizeof arr) 5 #define debug(x) cout<<"< "#x" = "<<x<<" >"<<en

HDU6440 Dream 2018CCPC网络赛-费马小定理

目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门 ?原题目描述在最下面. ?给定一个素数p,要求定义一个加法运算表和乘法运算表,使的\((m+n)^p=m^p+n^p(0≤m, n<p)\)成立. Solution: ?费马小定理:\(a^{p-1} = 1 mod p(p是素数)\) ?所以 \(a^p \;mod\; p = a^{p-1} \times a \;mod \;p = a

HDU6440 Dream(费马小定理+构造) -2018CCPC网络赛1003

题意: 给定素数p,定义p内封闭的加法和乘法,使得$(m+n)^p=m^p+n^p$ 思路: 由费马小定理,p是素数,$a^{p-1}\equiv 1(mod\;p)$ 所以$(m+n)^{p}\equiv (m+n)(mod\;p)$ $m^{p}\equiv m(mod\;p)$ $n^{p}\equiv n(mod\;p)$ 所以在模意义下,有$(m+n)^p=m^p+n^p$ 代码: #include<iostream> #include<cstdio> #include&

2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛

Banana Bananas are the favoured food of monkeys. In the forest, there is a Banana Company that provides bananas from different places. The company has two lists. The first list records the types of bananas preferred by different monkeys, and the seco

HDU-4041-Eliminate Witches! (11年北京网络赛!!)

Eliminate Witches! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1124    Accepted Submission(s): 426 Problem Description Kaname Madoka is a Magical Girl(Mahou Shoujo/Puella Magi). The duty of

CCPC 2017 网络赛

1001.我们的想法是,先构造n个要删掉的点,然后不断给图加边,使得每条边的其中一个点在n个点之中. 我们要使n个点之外的点尽量多,并且每次删掉的点在n个点之外. 贪心的决策是,每次操作,前n个点的度和令外的最大度的点度数相同. 然后删掉这个点之后,之后的操作,剩余的点也满足这个要求.所以度数最大的点必定与n个点有边. 于是可以这样构造,增加n批点(i = 1~n),每次增加n/i个点的,每个增加的点连出i条边到n个点. 这样,n个点每次增加的最大度数不超过1.但每次删点的时候(按n~1批的顺序

2015沈阳网络赛1003 Minimum Cut 树链剖分 数组维护前缀和进行区间增减

2015沈阳网络赛1003  Minimum Cut   树链剖分 数组维护前缀和进行区间增减 Minimum Cut Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 65535/102400 K (Java/Others)Total Submission(s): 0    Accepted Submission(s): 0 Problem Description Given a simple unweighted graph G