• 洛谷 P4942 小凯的数字(数论,逆元)


    传送门


    解题思路

    因为可以大整数分解为l*10k+(l+1)*10k-1+(l+2)*10k-3+……+r*100,而10k%9=1,所以原整数在模9意义下等于l+(l+1)+(l+2)+(l+3)+……+r=(l+r)*(r-l+1)/2。

    因为有除法,所以我们算出2在%9意义下的逆元为5,即可解决问题。

    逆元不会求咋办?当场退役。

    不!洛谷大佬告诉我们:

    当要除的数非常小的时候,我们可以直接把要取模的数扩大相应的倍数,正常除就行了。最后再对答案取模。

    即 ans = (l+r)%18*(r-l+1)%18/2%9;

    AC代码

     1 #include<iostream>
     2 using namespace std;
     3 int q;
     4 long long l,r;
     5 int main(){
     6     cin>>q;
     7     for(int i=1;i<=q;i++){
     8         cin>>l>>r;
     9         cout<<(l%9+r%9)*((r-l+1)%9)*5%9<<endl;
    10     }
    11     return 0;
    12 }
  • 相关阅读:
    2021广东省强网杯WriteUp
    2021 数字四川创新大赛WriteUp
    2021 陇剑杯wp
    2021 羊城杯WriteUP
    如何翻安全四大顶会的文章
    2021 祥云杯 wp
    codeql初探
    sqlmap应用
    sql注入2
    sql注入
  • 原文地址:https://www.cnblogs.com/yinyuqin/p/13832685.html
Copyright © 2020-2023  润新知