ACM题目
错误信息:Time limit Exceeded
如何改正能使代码通过
3条回答 默认 最新
- 技术专家团-小桥流水 2023-01-28 09:27关注
从l到r,用等差数列求和,for遍历的时候从数字1开始遍历,每次累乘2,用和减去2i,输出最后的结果就可以了。
运行结果:代码:
#include <stdio.h> int main() { int q; scanf("%d", &q); while (q--) { long l, r, sum = 0, i; scanf("%ld %ld", &l, &r); sum = (r - l + 1) * (l + r) / 2; //等差数列求和公式 for (i = 1; i <= r; i *= 2)//i从数字1开始(注意不是英文字母l) { if (i < l) continue; else sum -= 2 * i; //从和中减去并取反求和 } printf("%ld\n", sum); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 python爬取bilibili校园招聘网站
- ¥30 求解达问题(有红包)
- ¥15 请解包一个pak文件
- ¥15 不同系统编译兼容问题
- ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
- ¥30 数字电源对DSP芯片的具体要求
- ¥20 antv g6 折线边如何变为钝角
- ¥30 如何在Matlab或Python中 设置饼图的高度
- ¥15 nginx中的CORS策略应该如何配置
- ¥30 信号与系统实验:采样定理分析