zoukankan      html  css  js  c++  java
  • 2015 测试赛 大神和小伙伴 hihoCoder

    立方和公式和平方和公式。表示从来不记得这些公式。。。

    每库礼物不同数量相同,总数=1+2+...+n=(n+1)*n/2

    选取礼物的可能性的最大值为[(n+1)*n/2]^3

    选取礼物价值重复两次的总数3*(1^2+2^2+...+n^2)*(1+2+...+n)=3*[n*(n+1)*(2*n+1)/6]*[(n+1)*n/2]=n^2*(n+1)^2*(2*n+1)/4=[n*(n+1)/2]^2*(2*n+1)

    选取礼物价值重复三次的总数1^3+2^3+...+n^3=[n*(n+1)/2]^2

    题目中的情况是总数-重复两次+重复三次的(因两次中的公式包含了一个三次的)

    [(n+1)*n/2]^2*(n^2-3*n+4)/2%MAX

    对于前一个平方式子,可以直接把2除去。对于后一个2,n(n-3)也可以除去。

    #include <iostream>
    
    using namespace std;
    long long T,n;
    long long tmp,temp,result,ans;
    long long MAX = 1e9 + 7;
    int main()
    {
      cin >> T;
      for(long long i = 0; i < T; i++)
      {
        cin >> n;
        cout << "Case " << i+1 << ": ";
        if(n%2==0)
        {
          tmp = n / 2 % MAX;
          temp = (n + 1) % MAX;
          result= ((tmp*((n-3)%MAX))%MAX+2)%MAX;
        }else
        {
          tmp = n % MAX;
          temp = (n + 1) / 2 % MAX;
          result=((((n-3)/2 %MAX)*n)%MAX+2)%MAX;
        }
        ans =( ((tmp * temp % MAX)*(tmp * temp % MAX))%MAX*result)%MAX;
        cout << ans << endl;
      }
      return 0;
    }
    

      

  • 相关阅读:
    DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践
    UVA10071 Back to High School Physics
    UVA10071 Back to High School Physics
    UVA10055 Hashmat the Brave Warrior
    UVA10055 Hashmat the Brave Warrior
    UVA458 The Decoder
    UVA458 The Decoder
    HDU2054 A == B ?
    HDU2054 A == B ?
    POJ3414 Pots
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4415210.html
Copyright © 2011-2022 走看看