AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 更多
    • 题解
    • 分享
    • 商店
    • 问答
    • 吐槽
  • App
  • 登录/注册

AcWing 3414. 校门外的树

作者: 作者的头像   Unkillable ,  2023-05-26 18:36:20 ,  所有人可见 ,  阅读 12


0


#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

const int N = 1050;

const int M = 1e5 + 50;

const int mod = 1e9 + 7;

int n;

int a[N];

int f[N];

vector<int> q[M];

bool st[M];

int main()
{
    for(int i = 1; i < M; i++)
        for(int j = i * 2; j < M; j += i)
        q[j].push_back(i);

    scanf("%d", &n);

    for(int i = 0; i < n; i++)
        scanf("%d", &a[i]);

    f[0] = 1;
    for(int i = 1; i < n; i++)
    {
        memset(st, 0, sizeof st);

        for(int j = i - 1; j >= 0; j--)
        {
            int d = a[i] - a[j], cnt = 0;
            for(auto k : q[d])
            {
                if(!st[k])
                {
                    cnt++;
                    st[k] = true;
                }
            }
            st[d] = true;
            f[i] = (f[i] + (LL)f[j] * cnt) % mod;
        }
    }

    printf("%d", f[n - 1]);
    return 0;
}

0 评论

你确定删除吗?

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息