在X星球上正在举行一次幸运者抽奖活动,X星球的政府首脑制定了一个特殊的抽奖规则,凡是身份证号码符合对称性质(回文串)的人就能够成为本次活动的幸运者。
现在你知道X星球中最大的身份证号码,希望你能够计算出最多有多少人将成为本次活动的幸运者。
其中 N <= 30
3 bca
28
30个z算出来的结果都和人家一样,但就是wa,郁闷啊。
1 import java.util.Scanner;
2 public class Main {
3 public static void main(String[] args) {
4 Scanner in = new Scanner(System.in);
5 int len = in.nextInt();
6 String input = in.next();
7 if(len==1)
8 System.out.println(input.charAt(0)-'a'+1);
9 else
10 {
11 int count=len/2;
12 int ji = 1- len%2;
13 int sum=0;
14 for(int i=0;i<count;i++)
15 {
16 sum+=(input.charAt(i)-'a')*(Math.pow(26, count- i -ji)%10000);
17 if(sum>10000)sum%=10000;
18 }
19 int j=0;
20 for(;j<count;j++)
21 {
22 if(input.charAt(j)>input.charAt(len-j-1))
23 break;
24 }
25 if(j==count)sum++;
26 if(ji==0)sum+=input.charAt(count)-'a';
27 sum%=10000;
28 System.out.println(sum);
29 }
30 }
31 }
32
2 public class Main {
3 public static void main(String[] args) {
4 Scanner in = new Scanner(System.in);
5 int len = in.nextInt();
6 String input = in.next();
7 if(len==1)
8 System.out.println(input.charAt(0)-'a'+1);
9 else
10 {
11 int count=len/2;
12 int ji = 1- len%2;
13 int sum=0;
14 for(int i=0;i<count;i++)
15 {
16 sum+=(input.charAt(i)-'a')*(Math.pow(26, count- i -ji)%10000);
17 if(sum>10000)sum%=10000;
18 }
19 int j=0;
20 for(;j<count;j++)
21 {
22 if(input.charAt(j)>input.charAt(len-j-1))
23 break;
24 }
25 if(j==count)sum++;
26 if(ji==0)sum+=input.charAt(count)-'a';
27 sum%=10000;
28 System.out.println(sum);
29 }
30 }
31 }
32