zoukankan      html  css  js  c++  java
  • Pythagorean Triples CodeForces

    给定一个数n(1 <= n <= 1e9),判断这个数是否是一个直角三角形的边长,如果是,则输出另外两条边(1 <= x <= 1e18),否则输出-1.

    参考题解:http://blog.csdn.net/harlow_cheng/article/details/69055614

    百度勾股数

    首先,当n <= 2 的时候无解,其他时候都有解

    假设n是直角边,a是斜边,则n^2 + b^2 = a^2;

    n^2 = (a + b)*(a - b);

    ①假设n是偶数,则另(a - b) == 2;

    ==>  a + b = (n ^ 2) / 2;

    ==>  a* 2 = (n*n)/2 + 2;

    ==>  a = n*n/4 + 1;

    因为n是大于二的偶数,所以a有整数解,b = a- 2;

    ②假设n是偶数,则另(a - b) == 1;

    ==>  a + b = (n ^ 2) ;

    ==>  a* 2 = (n*n) + 1;

    因为n是大于二的奇数,所以a有整数解,b = a- 1;

    代码如下

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     long long  x;
     6     cin >> x;
     7     if(x <= 2){cout<<"-1"<<endl; return 0;}
     8     if(x % 2)
     9     {
    10         long long  a = (x * x + 1) / 2;
    11         long long int b = a - 1;
    12         cout << b << " " << a << endl;
    13     }
    14     else
    15     {
    16         long long int a = x * x / 4 + 1;
    17         long long int b = a - 2;
    18         cout << b << " " << a << endl;
    19     }
    20     return 0;
    21 }

    这是看完题解后补得题,惭愧,都说是大水题,还是没做出来,,,

    看题的时候没法想到这方面,总是想着枚举暴力,懒,不愿动笔,这是一个大缺点,要改。!

    print “ 欢迎来到渣小狼的博客,这既是博客,也是日记,里面记录了小狼的学习经历还有一些小狼的见解,非常希望每一个来到这里的人能够留下只言片语,更加的希望留下的是对于小狼的不足的补充,谢谢(*^__^*) 嘻嘻……”
  • 相关阅读:
    PsySH——PHP交互式控制台
    PHP通过ssh或socks5读取远程服务器的mysql数据库
    构建:vue项目配置后端接口服务信息
    module.exports用法
    PhpStorm连接服务器,开始自动上传功能
    JavaScript Array.some()方法用法
    vue-router query和params传参(接收参数),$router、$route的区别
    ES6箭头函数(Arrow Functions)
    工作中常用到的ES6语法
    VueJs2.0建议学习路线
  • 原文地址:https://www.cnblogs.com/wolf-yasen/p/6728891.html
Copyright © 2011-2022 走看看