NYOJ 2356 哈希计划(模拟)
2017-09-03 14:33
323 查看
题目链接:
http://acm.nyist.me/JudgeOnline/problem.php?id=2356
输入一段字符串,输出一个哈希值
为了简化这个问题,我们假设游戏的哈希方法是:
从第二个字符开始每个字符都对应其ACISS码的值,然后异或上一个字符的ACISS码值,然后所有的异或值相乘取余字符串中出现最多的那个字符的ACISS码值(如果有多个,则选取ACISS码最小的那个)
输入包含一个只有小写字母的字符串s,
2<=s<=10000
解题思路:
仔细按照题目模拟即可。
AC代码:
http://acm.nyist.me/JudgeOnline/problem.php?id=2356
题目描述
众所周知,LLM的算法之所以菜,就是因为成天打游戏,最近LLM突然想玩《金庸群侠传X》,结果进去后各种被虐,LLM就开始研究这个游戏的代码,顺便还学会了一点点点点lua语言,然后就开始了伟大的改游戏代码之旅,然后LLM发现自己too young了,这个游戏把所有的文本都进行了哈希,如果自己改了代码或者剧情文本的话它哈希出来的值就会和原来的哈希值不一样......然后游戏就会打不开.....,现在LLM发现了文本的哈希函数,要求你写个程序,功能为:输入一段字符串,输出一个哈希值
为了简化这个问题,我们假设游戏的哈希方法是:
从第二个字符开始每个字符都对应其ACISS码的值,然后异或上一个字符的ACISS码值,然后所有的异或值相乘取余字符串中出现最多的那个字符的ACISS码值(如果有多个,则选取ACISS码最小的那个)
输入
每个测试文件不多于100组测试样例输入包含一个只有小写字母的字符串s,
2<=s<=10000
输出
输出仅一个数字,代表答案样例输入
asd as asadf
样例输出
26 18 39
提示
来源
河南省多校脸萌第六场解题思路:
仔细按照题目模拟即可。
AC代码:
1 #include<stdio.h> 2 #include<string.h> 3 char a[10010]; 4 int main() 5 { 6 int b[26],i,l,m,j; 7 long long ans1,ans2; 8 while(scanf("%s",a) != EOF) 9 { 10 l=strlen(a); 11 12 memset(b,0,sizeof(b)); 13 for(i=0;i<l;i++) 14 b[a[i]-'a']++; 15 for(j=0,m=0,i=0;i<26;i++) 16 { 17 if(b[i] > j) 18 { 19 j=b[i]; 20 m=i;//找到出现次数最多的字母 21 } 22 } 23 24 ans1 = a[0]-'a'+97; 25 for(i=1;i<l;i++)//按题意模拟 26 { 27 ans1 = (a[i-1]-'a'+97) ^ (a[i]-'a'+97); 28 if(i==1) 29 ans2 = ans1; 30 else 31 { 32 ans2 *= ans1; 33 ans2 %= (m+97); 34 } 35 } 36 printf("%lld\n",ans2); 37 } 38 return 0; 39 }
相关文章推荐
- NYOJ 2356 哈希计划(模拟)
- NYOJ 2356 哈希计划(模拟)
- NYOJ 2356: 哈希计划【模拟】
- [模拟][哈希]刷题计划
- nyoj 63(小猴子下落)(模拟,二叉树)
- NYOJ 题目77 开灯问题(简单模拟)
- poj 1573 Robot Motion 【模拟】【刷题计划】
- SQL执行计划-嵌套连接、哈希连接和合并连接
- 哈希连接的执行计划
- nyoj2 括号配对问题 模拟转化为栈
- NYOJ-93 汉诺塔(三)【模拟】
- 【分块】【哈希】bzoj3578 GTY的人类基因组计划2
- nyoj--1233--差值(贪心模拟+大数)
- nyoj 1187 模拟2048 (模拟题)
- NYOJ54-小明的存钱计划
- nyoj-722 数独(深搜,哈希)
- BZOJ_3207_花神的嘲讽计划Ⅰ_哈希+主席树
- nyoj-130 相同的雪花 (哈希)
- NYOJ 303-序号互换【模拟】
- Java httpClient 正方教务管理系统模拟登陆,爬取学生成绩和培养计划