首页 > 编程知识 正文

哈希函数定义,哈希方程

时间:2023-05-03 11:55:56 阅读:154687 作者:4502

位运算与ASCII码的运用

香蕉在冬天设计了ffdlz函数,将长kk的字符串转换成长3232的字符串。 此ffdlz函数mathcal{f}f的设计如下:

声明长度为3232的数组arr,并将其中的所有元素初始化为0。

取出各位的ASCII值,将长度为kk的字符串中的第ii个ASCII代码添加到arr [ I % 32 ] (1(leqi ) leqk1Ik )。

声明长度为3232的排列bits,将bits[j]作为对arr[31 - j]和arr[j] 1的值进行异或运算的结果(0(leqj(leq310j31 ) )。

计算bits[j] % 85 34并将与此十进制ASCII代码对应的字符输出到结果字符串的第j 1j 1位(0(leqj(leq310j31 ) )。

输入字符串ss后,请实现输出ffdlz函数结果mathcal{f}{s}f(s )的程序。

输入格式

输入包含长度为kk的字符串(32 k 50032k500 )的行,该字符串由大小写和数字组成。 不包括空格。

输出格式

输出为一行,长度为3232的字符串ffdlz的结果

习题的目的

练习左移运算

异或运算练习

练习使用类型转换处理int类型和char类型的关系

样品输入

123456789012345678901234567890123

样品输出

' p*,) ' ebst*,) ' ebst*,) ' ebr

# include stdio.h # include stddef.h # include string.h chars [ 500 ]; int arr[32]; int bits[33]; 输入主((memset ) arr,0,sizeof ) ); //gets(s; scanf('%s ',s ); for(intI=0; s[i]!=' '; I () ARR () I1 ) 31 )=s ) I ); }for(intj=0; j 32; j({bits[j]=(ARR[31-j]^ ) ARR[j]1) ); }for(intj=0; j=31; j () printf('%c ',bits[j] % 85 34 ); }printf((n ); 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。