zoukankan      html  css  js  c++  java
  • [HDU5685]Problem A

    来源:

    2016"百度之星" - 资格赛(Astar Round1)

    思路:

    首先处理出所有前缀的哈希$f$,对于所有的询问$[a,b]$,答案即为$frac{f[b]}{f[a-1]}$。
    哈希值除法可以通过乘逆元实现。
    注意循环时不能直接用$strlen(s)$作为判断条件,
    因为$strlen()$函数是$O(n)$的复杂度,这样每次循环都会运行一次,就会把$O(n)$的循环退化成$O(n^2)$的。

     1 #include<cstdio>
     2 const int LEN=100001,mod=9973;
     3 char s[LEN];
     4 int f[LEN]={1};
     5 int exgcd(const int a,const int b,int &x,int &y) {
     6     if(!b) {
     7         x=1;
     8         y=0;
     9         return a;
    10     }
    11     int t=exgcd(b,a%b,y,x);
    12     y-=a/b*x;
    13     return t;
    14 }
    15 int main() {
    16     int n;
    17     while(~scanf("%d",&n)) {
    18         scanf("%s",s);
    19         for(unsigned i=0;s[i];i++) {
    20             f[i+1]=f[i]*(s[i]-28)%mod;
    21         }
    22         while(n--) {
    23             int a,b;
    24             scanf("%d%d",&a,&b);
    25             int x,y;
    26             exgcd(f[a-1],mod,x,y);
    27             printf("%d
    ",f[b]*(x+mod)%mod);
    28         }
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    kali一些基础工具
    Yii2引入css和js文件
    My97DatePicker日期插件
    Yii2助手函数
    yii2相关前台组件
    yii2之DetailView小部件
    关于SQL_MODE的那些事
    Yii2 RBAC
    ORM介绍
    ASCII码
  • 原文地址:https://www.cnblogs.com/skylee03/p/7338983.html
Copyright © 2011-2022 走看看