zoukankan      html  css  js  c++  java
  • 【百度之星】【java大数+C++做法】hdu 6719 Strassen

    代码:递归搜索一下。java大数做法

    import java.util.*;
    import java.math.*;
    import java.security.MessageDigest;
    
    public class Main {
         static BigInteger s=BigInteger.ONE.add(BigInteger.ONE);
        public static void main(String[] args) {
            Scanner cin=new Scanner(System.in);
            int T;
            T=cin.nextInt();
            while(T-->0)
            {
                BigInteger a,b,n;
                
                n=cin.nextBigInteger();
                a=cin.nextBigInteger();
                b=cin.nextBigInteger();
                BigInteger ans=cul(n,a,b).mod(BigInteger.valueOf(1000000007));
                System.out.println(ans);
                
            }
        }
        public static BigInteger cul(BigInteger n,BigInteger a,BigInteger b)
        {
            if(n.equals(BigInteger.ONE))
            {
                BigInteger sum1=n.multiply(n).multiply(n).multiply(b).add(n.subtract(BigInteger.ONE).multiply(n).multiply(n).multiply(a));
                return sum1;
            }
            return min((n.divide(s)).multiply(n.divide(s)).multiply(BigInteger.valueOf(18)).multiply(a).add(cul(n.divide(s),a,b).multiply(BigInteger.valueOf(7))),n.multiply(n).multiply(n).multiply(b).add(n.subtract(BigInteger.ONE).multiply(n).multiply(n).multiply(a)));
        }
        private static BigInteger min(BigInteger add, BigInteger add2) {
            // TODO Auto-generated method stub
            if(add.compareTo(add2)<0)
                return add;
            else return add2;
        }
    }

    C++:

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    #include<set>
    #include<cmath>
    #include<string>
    #include<map>
    #include<vector>
    #include<ctime>
    #include<stack>
    using namespace std;
    #define mm(a,b) memset(a,b,sizeof(a))
    typedef long long ll;
    const long long mod = 1e9 + 7;
    const int maxn = 1e5 + 10;
    const ll inf = 1e18;
    ll a, b;
    ll f1(ll n) {
        n %= mod;
        return (n*n%mod*n%mod*b%mod + n * n%mod*(n - 1) % mod*a%mod) % mod;
    }
    ll f2(ll n) {
        if (n % 2) return f1(n);
        if (n <= 30 * a / (a + b)) return f1(n);
        return (18 * (n / 2) % mod*(n / 2) % mod*a%mod + 7 * f2(n / 2) % mod) % mod;
    }
    int main()
    {
        int t;
        ll n;
        cin >> t;
        while (t--)
        {
            scanf("%lld%lld%lld", &n, &a, &b);
            printf("%lld
    ", f2(n));
        }
    }
  • 相关阅读:
    一些名词解释
    less那些事儿
    正则表达式检测汉字
    正则匹配括号中内容
    atom中vue高亮支持emmet语法
    正则匹配标签内内容
    联想一体机u盘启动设置
    vuejs时间格式化
    graphicsmagick常用命令
    js中对象的深度复制
  • 原文地址:https://www.cnblogs.com/Tangent-1231/p/11408524.html
Copyright © 2011-2022 走看看