传送门
题意:有一个大小为5e5的数组,初始时数组元素全为0,有两种操作
1 x y,为a[x]+=y
2 x y,为求数组下标%x==y的所有元素之和
题解:分块,当模数小于T时可以直接预处理出模数为i余数为j的元素和sum[i][j],更新时sum[i][x%i]+=y,更新复杂度为O(T),而模数大于T时直接暴力求和,时间复杂度为O(N/T),当T=sqrt(N)时二者复杂度相同,则可以据此进行分块
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define debug(x) cout<<#x<<" is "<<x<<endl;
const ll mod=1e9+7;
const int maxn