HDU6719 Strassen(__int128)

HDU6719 Strassen

直接照题目模拟,数据范围最大不会超过__int128

时间复杂度为 (O(log n))

#include<bits/stdc++.h>

using namespace std;

const int mod = 1e9 + 7;
__int128 ans;
int t, a, b;
long long n;

__int128 solve(__int128 n)
{
    __int128 ans = n*n*n*b+(n-1)*n*n*a;
    if(n%2==0)ans = min(ans,18*(n/2)*(n/2)*a+7*solve(n/2));
    return ans;
}
int main()
{
    for(scanf("%d", &t); t--;){
        cin >> n >> a >> b;
        cout << (int)(solve(n) % mod) << endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/solvit/p/11409816.html