1116蓝桥杯算法双周赛小白入门赛4.5.6题题解-6.召唤帝皇侠算法赛 - 蓝桥云课

这是一道很恶心的数学题.......

我参考了这个人的题解

分析:

对于任意[n*n,(n+1)*(n+1))   里的元素来说,需要%n == 0 才符合题意

        分析这其中的元素

  1.         n*n < (n+1)*(n+1)   && (n+1)*(n+1) % n == 0
  2.         n*(n + 1) < (n+1)*(n+1)   && (n+1)*(n+1) % n == 0
  3.         n*(n + 2) < (n+1)*(n+1)   && (n+1)*(n+1) % n == 0

一个值最多有三个

和为n * (3n +3)

n 从 1 到  根号 X  也就是

n(n+1)(n+2)

#include <iostream>
#include <cmath>
using namespace std;
using ll = long long;
ll N = 998244353;
int main() {
    int t;  cin >> t;
    while (t--) {
        ll x;  cin >> x;
        ll n = (ll)sqrt(x + 1); // 取整
        ll ret = (n - 1) * n % N * (n + 1) % N;   // 前面完整的情况
        // 不完整情况
        int i = 0;
        while (n * (n + i) <= x)
            ret = (ret + n * (n + i++) ) % N;
        cout << ret << endl;
    }
}

上一篇:C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)


下一篇:spring ai alibaba检索增强生成RAG技术实现企业内部知识库检索(问答)系统,not模型微调