2015浙工大校赛-Problem C: 三角—— 费马大定理+勾股数

题目

有一个直角三角形三边为 A,B,C 三个整数。已知 C 为最长边长,求一组B,C,使得B和C最接近。

题目链接

分析

打表找规律。

或者直接一点的枚举 $C-B$ 的值。(既然枚举 B 不现实,枚举差值是一种很好的思路啊,学习了 %%% 博客)

或者使用费马大定理(的一小部分),

当 $A$ 为奇数时($A > 1$),存在 $C-B = 1$ 的整数解使得 $A^2 + B^2 = C^2$;

当 $A$ 为偶数时 ($A > 2$),存在 $C-B = 2$ 的整数解使得 $A^2 + B^2 = C^2$.

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
ll a, b, c;

int main()
{
    while(scanf("%lld", &a) == 1)
    {
        if(a & 1)
        {
            b = (a * a - 1) / 2;
            c = b + 1;
        }
        else
        {
            b = (a * a - 4) / 4;
            c = b + 2;
        }
        printf("%lld %lld\n", b, c);
    }
    return 0;
}

参考链接:

1. https://blog.csdn.net/david_jett/article/details/44750687

2. https://blog.csdn.net/Xylon_/article/details/82107186

原文地址:https://www.cnblogs.com/lfri/p/11330038.html

时间: 2024-11-10 22:08:01

2015浙工大校赛-Problem C: 三角—— 费马大定理+勾股数的相关文章

2015浙工大校赛- Problem I: no2(概率题,贝叶斯公式)

题目链接:http://acm.zjut.edu.cn/onlinejudge/problem.php?cid=1101&pid=8 题面: Problem I: no2 Time Limit: 1 Sec  Memory Limit: 32 MB Submit: 342  Solved: 23 [Submit][Status][Web Board] Description 已知有个市有n人,得了僵尸病的概率是p.你去参加了检测,检查出来是阳性.医生告诉你这次检测,得病的人检测出阳性的概率是r1

2014工大校赛题目以及解

a,b题不说. c题思路是每次枚举俩个点,用半径R确定最大的圆(这样的圆有俩个,求圆心手算有点小麻烦),更新最大值,3次方的,100个点,不会超时. D题是枚举+贪心,所有物品一共只能是N+1种被拿的情况:要么全是用R(该位子是若用右手标记R,若用左手标记L):RRR...RRR,或者第一个物品用L:LRRR...RR,.....依次到LLLLLL..LLL,一个序列来记录每个物品是被左手还是右手拿.枚举所有序列,如LLL...RRR,贪心:那必然是一次L一次R,多出来的需要额外开销能量.如LL

2014东北农大校赛--D.Cross the middle (任意两点最短路径 Floyd)

Cross the middle Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 36  Solved: 13 [Submit][Status][Web Board] Description n个点的图,给出任意两点之间的距离,m个询问,每次询问Mid是否可能出现在从Start到End的最短路径上. Input 第一行n,m 接下来是一个n*n的邻接矩阵,w[i][j]表示i到j的距离 接下来m行 每行start,end,mid N,m<=100,

2014东北农大校赛--A. Paint it! (预处理)

1141: A.Paint it! Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 13  Solved: 10 [Submit][Status][Web Board] Description 有一个n*m的棋盘,每个格子只可能是黑和白两种颜色,你可以使用染料将某个格子染成黑色或者白色.求最少需要染多少个格子, 能使当前的棋盘变成类似于国际象棋的棋盘(每个格子临边的四个格子颜色都不与该格子的颜色相同). Input n m(n,m<=100) 接下

zoj3862 intersection[2015浙大校赛C题]

题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5474 题意: 按1-2n的编号给定2n个点以及n条线段,每个点属于且仅属于一条线段. 线段用端点的编号确定. 现在一次操作可以交换两个点的编号, 要求在不超过n+10次的操作后使得任意两条线段不相交. 输入保证任意两个点不重合,任意三个点不相交. 思路: 首先要明确,不是要求最少操作次数,只要不超过n+10次就可以. 所以一定有解: step 1: 点配对 把所有点按水

广工2017校赛-F-- tmk找三角

http://gdutcode.sinaapp.com/problem.php?cid=1056&pid=5 Description 有一棵树,树上有只tmk.他在这棵树上生活了很久,对他的构造了如指掌.所以他在树上从来都是走最短路,不会绕路.他还还特别喜欢三角形,所以当他在树上爬来爬去的时候总会在想,如果把刚才爬过的那几根树枝/树干锯下来,能不能从中选三根出来拼成一个三角形呢? Input 第一行输入一个T,表示有多少组样例. 对于每组数据:第一行包含一个整数 N,表示树上节点的个数(从 1

ACM 2015年上海区域赛A题 HDU 5572An Easy Physics Problem

题意: 光滑平面,一个刚性小球,一个固定的刚性圆柱体 ,给定圆柱体圆心坐标,半径 ,小球起点坐标,起始运动方向(向量) ,终点坐标 ,问能否到达终点,小球运动中如果碰到圆柱体会反射. 学到了向量模板,写法简洁. 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #define clc(a,b) sizeof(a,b,sizeof(a)) 6

河工大校赛 魔法宝石 http://218.28.220.249:50015/JudgeOnline/problem.php?id=1262

题目就是一道最短路的变形  数据比较大  所以使用邻接表以及队列来完成 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<queue> #include<vector> #include<map> #include<math.h> using namespace std; #define INF

河工大校赛 Hmz 的女装 http://218.28.220.249:50015/JudgeOnline/problem.php?id=1265

一个数学公式  当然单纯的推   是很难推出来的 题意所计算的没有现成的公式  但是能够通过转化找到我们所要的 所需要的公式  :用m个颜色去涂n个区域 要求相邻不同色 公式: (m-1)的n次方+(m-1)*(-1)的n次方 而我们需要的是两个点必须相同   所以可以规划成两个只有一个相交点的多边形 比如n=8要1和4的相同  就可以理解为123三点组成一个环  而45678五个点组成一个环 我们将两个环的种数相乘  因为1和4颜色相同  所以要再除以k  也就是多出了一个k 所以又用到  (