UVA10298 POWER STRINGS HASH做法求助
  • 板块学术版
  • 楼主LoverBoyInMacau
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/8/5 22:16
  • 上次更新2023/11/6 21:11:29
查看原帖
UVA10298 POWER STRINGS HASH做法求助
262074
LoverBoyInMacau楼主2020/8/5 22:16

rt 为什么有些答案输出不了 只能输出部分答案??救救蒟蒻```cpp #include<bits/stdc++.h> #define re register #define il inline #define ull unsigned long long const int num=31; const int mod=1e8+7; char s[2000010]; ull wdnmd[2000010],poww[2000010]; il int gethash(ull s[],int l,int r) { return wdnmd[r]-wdnmd[l-1]*poww[r-l+1]; }

int main() { poww[0]=1; for(re ull i=1;i<=2000000;i++) poww[i]=poww[i-1]*num; while(scanf("%s",s)==1) { if(s[0]=='.')return 0; ull hash1=0; ull len=strlen(s); for(re int i=1;i<=len;i++) wdnmd[i]=wdnmd[i-1]num+s[i-1]; // for(re int i=1;i<=len;i++) for(re int i=1;i<=len;i++) { hash1=hash1num+s[i-1]; if(len%i!=0) continue; int flag=1; for(re int j=1;j<=len&&flag;j+=i) if(gethash(wdnmd,j,i+j-1)!=hash1) flag=0; if(flag) {printf("%d\n",len/i);break;} } } return 0; }

2020/8/5 22:16
加载中...