解题思路:
注意事项:
参考代码:
#include <bits/stdc++.h> using namespace std; const int maxn = 1E5+2; int _log[maxn],a[maxn]; int n,m,sum; int p(int n) { return !n ? 1 : p(n-1)<<1; } int main() { cin >> n >> m; int l,r,l1,r1; l = 1; //打表maxn内的对数 O(n) for(int i=1; p(i-1)<=maxn; ++i) { r = p(i); for(int j=l; j<r&&j<=maxn; ++j) { _log[j] = i; } l = r; } for(int i=1; i<=n; ++i) { cin >> a[i]; sum += a[i]; } for(int i=0; i<m; ++i) { cin >> l1 >> r1; for(int j=l1; j<=r1; ++j) { sum -= a[j]; a[j] = _log[a[j]]; sum += a[j]; } cout << sum << endl; } return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:560 |
点我有惊喜!你懂得!浏览:1514 |
点我有惊喜!你懂得!浏览:2212 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:580 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:544 |
川哥的吩咐 (C语言代码)浏览:871 |
九宫重排 (C++代码)浏览:1326 |
【密码】 (C语言代码)浏览:333 |
求圆的面积 (C语言代码)浏览:1267 |
A+B for Input-Output Practice (II) (C语言代码)浏览:990 |