hdu5734 推公式 多校2.1

来源:互联网 发布:深圳知豆电动车租赁 编辑:程序博客网 时间:2024/05/18 00:26

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5734


题目大意: 给你一个n维向量W,将W减去一个非0向量b,求最小的||W||


思路:减去W向量和的平均数,最后化简为一个很简单的式子…………


#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <stack>#include <queue>#include <algorithm>#include <vector>#include <map>#include <set>#include <stdlib.h>#include <iomanip>using namespace std;#pragma comment(linker, "/STACK:102400000,102400000")#define maxn 105#define MOD 1000000007#define mem(a , b) memset(a , b , sizeof(a))#define LL long long#define ULL unsigned long long#define FOR(i , n) for(int i = 1 ;  i<= n ; i ++)typedef pair<int , int> pii;//priority_queue<int , vector<int> , greater<int> > Q;int t , m;LL n , sum , sum1 , sum2 , sum3;LL gcd(LL a , LL b){    if(b == 0) return a;    else return gcd(b , a % b);}int main(){    scanf("%d" , &t);    while(t--)    {        scanf("%lld" , &n);        sum = sum1 = sum2 = sum3 = 0;        LL u;        for(int i = 0 ; i < n ; i ++)        {            scanf("%lld" , &u);            if(u < 0) u = -u;            sum2 += u;            sum1 += u*u;        }        sum1 *= n;        sum3 = 2 * sum2* sum2;        sum += sum1 ;        sum -= sum2 * sum2;        LL tmp = gcd(sum , n);        printf("%lld/%lld\n" , sum / tmp , n / tmp);    }    return 0;}


0 0