公式准备:

    (16 * x) % 15 = x

    (16 ^ n * x) % 15 = x

    (1+2+... ...+15) % 15 = 0

    (n + n+1 + n+2 + ... ... + n+x) % 15 = (1+2+... ...+x)%15 = (1+x) * x / 2 % 15


注意事项:

    为了让n%15>m%15,将n%15后+15


参考代码:

#include <iostream>

using namespace std;

int main() {
    long long int m, n;
    cin >> m >> n;
    m %= 15;
    n %= 15;
    n += 15;
    cout << ((n - m) + 1) * (m + n) / 2 % 15 << endl;
    return 0;
}


点赞(2)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

tianmaxk 5年前 回复TA
@tianmaxk 题目的范围,我知道是右端最大为1000000000000。我的意思是如果改成2(^64)-1,代码能通过吗
ET 5年前 回复TA
@tianmaxk 数据范围:1 <= m <= n <= 1000000000000
tianmaxk 5年前 回复TA
请问如果区间右端最大值为2(^64)-1,代码能通过吗