A*********t 发帖数: 64 | 1 假设2^i3^j的序列从小到大排起来:1, 2, 3, 4, 6, 8, 9, 12, 16, 18, 27...
给出m和n (都很大,m<=10^15, n <= 10^9)。
求这个序列前m项和对n取模的值。 | S********e 发帖数: 74 | 2 感觉这个有点像CC150里数学概率部分的最后一题? | g*****g 发帖数: 212 | 3 2^i3^j的序列从小到大排起来
求这个序列是mlogm
至于mod n这个cost可不计 | g*****g 发帖数: 212 | 4 struct Node23 {
int i;
int j;
int w;
bool operator> (const Node23& n) const{
return w > n.w;
}
Node23(int i, int j) : i(i), j(j), w(pow(2,i)*pow(3,j)) {}
};
int getTopN23s(int m, int n)
{
priority_queue, greater > q;
q.push(Node23(0,0));
int sum = 0;
for(int i=0; i
{
Node23 node = q.top();
q.pop();
sum = (sum + node.w) %n;
cout<
if (node.i
{
q.push(Node23(node.i,node.j+1));
}
else if (node.i>node.j)
{
q.push(Node23(node.i+1,node.j));
}
else
{
q.push(Node23(node.i+1,node.j));
q.push(Node23(node.i,node.j+1));
q.push(Node23(node.i+1,node.j+1));
}
}
return sum;
} | A*********t 发帖数: 64 | 5 10^15啊
【在 g*****g 的大作中提到】 : struct Node23 { : int i; : int j; : int w; : bool operator> (const Node23& n) const{ : return w > n.w; : } : Node23(int i, int j) : i(i), j(j), w(pow(2,i)*pow(3,j)) {} : }; : int getTopN23s(int m, int n)
|
|