zoukankan      html  css  js  c++  java
  • Codeforces Round #198 (Div. 2) —— C

    C题很容易看懂题目,不过两个循环肯定会TLE,所以得用点小聪明;

    首先排好序,因为是全排列,乱序和顺序的结果是一样的;

    然后呢····

    如果是数列 1 2 3 4 5

    元素1 被 2 3 4 5每个减了2次,它自己减0一次;相抵后为-7;

    元素2 被 3 5 4 每个减了2次,它减1两次,减0一次;相抵后为 -3;

    元素3 相抵后为1;

    可以发现他们的数量相差4;这样就好办了,一个循环就搞定了;

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 using namespace std;
     5 int a[100009];
     6 long long gcd(long long a,long long b)
     7 {
     8     return b==0?a:gcd(b,a%b);
     9 }
    10 int main()
    11 {
    12     long long ans=0,n,t;
    13     cin>>n;
    14     for(long long i=0; i<n; i++)
    15         scanf("%d",&a[i]);
    16     sort(a,a+n);
    17     t=3-2*n;
    18     for(long long i=0; i<n; i++,t+=4)
    19         ans+=a[i]*t;
    20     long long k=gcd(ans,n);
    21     cout<<ans/k<<" "<<n/k<<endl;
    22     return 0;
    23 }
    View Code
  • 相关阅读:
    SpringMVC详解
    java设计模式
    运行时异常与一般异常区别
    oracle基本操作大全
    get post 区别
    hibernate
    Spring框架
    http和https
    JDBC详解
    (转)Entity Framework4.1实现动态多条件查询、分页和排序
  • 原文地址:https://www.cnblogs.com/yours1103/p/3293173.html
Copyright © 2011-2022 走看看