4942 小凯的数字
这道题是用来学习逆元的
题意很好理解,就是一个区间的数的拼一起对9进行取余
如果用正常的算法会的到70分,需要进行逆元
通过学习会想起来之气五年级的一个知识点,就是说“一个数%9的余数等于一个数各个位之和模%9的余数”
那么表示和的话的就有两个算式
(l+r)*(r-l+1)/2拆:
1.(l+r)/2与(r-l+1)
2.(l+r)与(r-l+1)/2
所以我们就分了两种情况,奇数偶数啦
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
long long q;
long long l,r;
int main()
{
cin>>q;
long long x,y;
while(q--)
{
cin>>l>>r;
if((l+r)%2==0)
{
x=(l+r)/2;
y=r-l+1;
}
else
{
x=(r-l+1)/2;
y=l+r;
}
cout<<(x%9*y%9)%9<<endl;
}
return 0;
}
这篇博客探讨了一道编程竞赛题目,涉及利用逆元概念优化算法以提高效率。博主解释了如何利用数论中‘一个数对9取余等于其各位数字之和对9取余’的性质,来简化区间内所有数字之和对9取余的计算。通过区分区间和为偶数和奇数的情况,博主提供了两种计算方法,并给出了C++实现。博客旨在帮助读者理解和应用数学技巧解决编程问题。
812

被折叠的 条评论
为什么被折叠?



