NYOJ 2356 哈希计划(模拟)
来源:互联网 发布:淘宝详情关联模板 编辑:程序博客网 时间:2024/06/16 08:22
题目链接:
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
输出
输出仅一个数字,代表答案
样例输入
asdasasadf
样例输出
261839
提示
来源
河南省多校脸萌第六场
解题思路:
仔细按照题目模拟即可。
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 else31 {32 ans2 *= ans1;33 ans2 %= (m+97);34 }35 }36 printf("%lld\n",ans2);37 }38 return 0;39 }
阅读全文
0 0
- NYOJ 2356 哈希计划(模拟)
- NYOJ 2356 哈希计划(模拟)
- NYOJ 2356: 哈希计划【模拟】
- NYOJ 2356: 哈希计划【模拟】 D
- (模拟赛)阅读计划
- NYOJ-93 汉诺塔(三)【模拟】
- NYOJ练习题 下三角矩形 (模拟)
- nyoj 弹球II(数学 模拟)
- NYOJ-305 表达式求值(模拟)
- nyoj--767--因子和(模拟)
- nyoj--92--图像有用区域(模拟)
- nyoj 309 乘雪橇(模拟)
- nyoj 1092数字分割(模拟)
- NYOJ-21-三个水杯(BFS 模拟)
- noip2004 津津的储蓄计划 (模拟)
- NYOJ-421 打扑克【模拟】
- NYOJ 2【栈模拟】
- NYOJ 220 (红黑树--模拟)
- sscanf:从一个字符串中读进与指定格式相符的数据
- P08: 泛化物品
- Problem E. Exponial---Urozero Autumn Training Camp 2016-Day 1||指数降幂公式
- rpm: /usr/bin/rpmspec: No such file or directory error 解决办法
- Android 添加菜单和返回按钮
- NYOJ 2356 哈希计划(模拟)
- 2.分层分离
- P09: 背包问题问法的变化
- java基础之IO流--PipedOutputStream(涉及到多线程技术的管道流,比较特殊)
- bzoj 2434: [Noi2011]阿狸的打字机
- python3提示name 'cmp' is not defined
- 支付宝网页扫码支付
- 链表合并(6)
- synchronized和static synchronized的区别