• NYOJ 2356 哈希计划(模拟)


    题目链接:

    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
    ",ans2);
    37     }
    38     return 0;
    39 }
  • 相关阅读:
    长按功能实现
    html2canvas使用笔记(站在巨人的肩膀上)
    vue项目中实现复制到剪贴板的函数
    python血坑的注意点
    arcgis
    20210815_fastapi_vue看视频整理
    20210804工作总结
    文献中的优秀表达
    利用mxd文档和切片文件发布地图切片服务
    修改mxd文档的数据源并保存为特定版本
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/7465155.html
Copyright © 2020-2023  润新知