社区讨论

为什么自己写读函数会有错误啊

P3370【模板】字符串哈希参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m3vdiqq5
此快照首次捕获于
2024/11/24 17:05
去年
此快照最后确认于
2025/11/04 14:00
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
unsigned long long bas='z'-'0'+5;
unsigned long long hashh[10010];
unsigned long long temp[1600];
char s[1610];
int ans=1;
inline void read(char *s){
    char ch=getchar();
    while(ch=='\n')ch=getchar();
    while(ch!='\n')*s=ch,++s,ch=getchar();
    *s='\0';
}
int main(){
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        //read(s);
        scanf("%s",s);
        int num=0;
        temp[num]=s[num]-'0'+1;
        num++;
        while(s[num]){
            temp[num]=temp[num-1]*bas+s[num]-'0'+1;
            num++;
        }
        hashh[i]=temp[num-1];
    }
    sort(hashh,hashh+n);
    for(int i=0;i<n-1;i++){
        if(hashh[i]!=hashh[i+1])ans++;
    }
    printf("%d",ans);
    return 0;
}
用scanf函数就能全过,用上面的read就会1,2,11wa,难道是读函数写错了?

回复

3 条回复,欢迎继续交流。

正在加载回复...