参考代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 1000010;
int a[N];
int main(void) {
int n, m;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
for (int i = 1; i <= m; i++)
{
int l, r, ans = 0;
scanf("%d%d", &l, &r);
for (int j = l; j <= r; j++) {
a[j] = floor(log2(a[j]) + 1);
ans += a[j];
}
for (int j = 1; j <= n; j++) {
if (j < l || j > r) ans += a[j];
}
printf("%d\n", ans);
}
return 0;
}
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题5.4 (C++代码)浏览:831 |
C语言程序设计教程(第三版)课后习题8.1 (C++代码)浏览:761 |
采药 (C++代码)浏览:1270 |
开心的金明 (C++代码)浏览:1188 |
【计算两点间的距离】 (C语言代码)浏览:1126 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:720 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:716 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:1094 |
printf基础练习2 (C语言代码)浏览:747 |