HDU 3422 Triangle

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3422

题意:给你一个数n,然后把4*(1+2+..+n)作为一个直角边,求如何围成一个三角形,且三角形的三条边没用公共的因子

思路:看数据猜出来的,斜边是直角边加1,就这样过了

AC代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <cmath>
#include <cctype>
const int inf = 0x3f3f3f3f;//1061109567
typedef long long ll;
const int maxn = 100010;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
int main()
{
    ll n;
    while(scanf("%I64d",&n) != EOF)
    {
        ll sum = (n * n + n) / 2;//用差数列求sum
        sum *= 4;//求出一条直角边
        ll edge = (ll)sqrt((sum+1)*(sum+1)-sum*sum);
        ll total = 2 * sum + 1 + edge - 3;
        printf("%I64d %I64d\n",total,sum+1);
    }
    return 0;
}


你可能感兴趣的:(HDU 3422 Triangle)