ACM-ICPC 2018 徐州赛区网络预赛 I. Characters with Hash

Mur loves hash algorithm, and he sometimes encrypt another one's name, and call him with that encrypted value. For instance, he calls Kimura KMR, and calls Suzuki YJSNPI. One day he read a book about SHA-256,which can transit a string into just 256 bits. Mur thought that is really cool, and he came up with a new algorithm to do the similar work. The algorithm works this way: first we choose a single letter L as the seed, and for the input(you can regard the input as a string ss, s[i]s[i] represents the iith character in the string) we calculates the value(|(int) L - s[i]|, and write down the number(keeping leading zero. The length of each answer equals to 22because the string only contains letters and numbers). Numbers writes from left to right, finally transfer all digits into a single integer(without leading zero(ss)).

For instance, if we choose 'z' as the seed, the string "oMl" becomes "1414".

It's easy to find out that the algorithm cannot transfer any input string into the same length. Though in despair, Mur still wants to know the length of the answer the algorithm produces. Due to the silliness of Mur, he can even not figure out this, so you are assigned with the work to calculate the answer.

Input

First line a integer T , the number of test cases (T10).

For each test case:

First line contains a integer N and a character z, (N1000000).

Second line contains a string with length N . Problem makes sure that all characters referred in the problem are only letters.

Output

A single number which gives the answer.

样例输入

2
3 z
oMl
6 Y
YJSNPI

样例输出

6
10

题目来源

ACM-ICPC 2018 徐州赛区网络预赛

 

复制代码
 1 int t,n;
 2 char  c;
 3 char s[1000009];
 4 int  main()
 5 {
 6     scanf("%d",&t);
 7     while(t--)
 8     {
 9         scanf("%d %c",&n,&c);
10         scanf("%s",s);
11         int i;
12         int ans=0;
13         for(  i=0;i<n;i++)
14         {
15             if(s[i]!=c){
16                 break;
17             }
18         }
19         if(i==n) {
20             printf("1\n");
21             continue;//000前俩个都是前导0
22         }
23         ans=abs(c-s[i])>=10?2:1;//前面的0都不算
24         ans+=2*(n-i-1);//后面的都一定是两位了
25         printf("%d\n",ans);
26     }
27     return  0;
28 }
复制代码

 

posted on   cltt  阅读(283)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示