zoukankan      html  css  js  c++  java
  • poj-2406(字符串hash)

    题目链接:传送门

    思路:字符串hash,终止条件竟然判断错了,真是太大意了。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int maxn = 1001000;
    typedef unsigned long long ULL;
    ULL power[maxn],a[maxn],b=13,tmp;
    char str[maxn];
    int main(void)
    {
        int len,i,j,cnt,fg,ans;
        for(power[0]=1,i=1;i<maxn;i++) power[i]=power[i-1]*b;
        while(scanf("%s",str+1))
        {
            if(strcmp(str+1,".")==0) break;
            len=strlen(str+1);
            for(a[0]=0,i=1;i<=len;i++)  a[i]=a[i-1]*b+(ULL)str[i];
            for(i=1;i<=len;i++)
            {
                if(len%i) continue;
                tmp=a[i]-a[0]*power[i];
                for(j=0;j+i<=len&&a[j+i]-a[j]*power[i]==tmp;j+=i) ;
                if(j+i>len)
                {
                    printf("%d
    ",len/i);
                    break;
                }
            }
        }
        return 0;
    } 
    View Code
  • 相关阅读:
    二叉树的遍历
    98验证二叉搜索树
    104二叉树的最大深度
    101对称二叉树
    100相同的树
    递归算法
    52N皇后II
    51N皇后
    90子集II
    526优美的排列
  • 原文地址:https://www.cnblogs.com/2018zxy/p/10300890.html
Copyright © 2011-2022 走看看