小明有 26 种游戏海报,用小写字母 "a" 到 "z" 表示。小明会把游戏海报装订成册(可能有重复的海报),册子可以用一个字符串来表示,每个字符就表示对应的海报,例如 abcdea 。小明现在想做一些“特别版”,然后卖掉。特别版就是会从所有海报(26种)中随机选一张,加入到册子的任意一个位置。
那现在小明手里已经有一种海报册子,再插入一张新的海报后,他一共可以组成多少不同的海报册子呢?
数据范围:输入的字符串长度满足
海报册子的字符串表示
一个整数,表示可以组成的不同的海报册子种类数
a
51
我们可以组成 'ab','ac',...,'az','ba','ca',...,'za' 还有 'aa', 一共 51 种不同的海报册子。
#include <stdio.h> int main() { char whatever; int a = 0; while(scanf("%c", &whatever)!=EOF) a++; printf("%d\n", 25*(a-1) + 26); }Python3:
print(25*len(input())+26)
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner input = new Scanner(System.in); String str = input.nextLine(); int len = str.length(); int sum = (len+1)*25+1; System.out.println(sum); } }
import java.util.Scanner; public class Main { public static int gameBill(String str){ int len = str.length(); if(len < 1 || len > 20){ return 0; } // 有 len+1 个空位置可以插入新海报(26种字符可选),有 len 组重复的数据需要去掉 return 26 * (len + 1) - len; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); System.out.println(gameBill(str)); sc.close(); } }
package nowcoder.demo04; import java.util.Scanner; public class Main { /** * 运行时间:41ms * * 占用内存:10452k * */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String next = scanner.next(); int length = next.length(); System.out.println((length+1)*26-length); } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNextLine()){ String booklet = sc.nextLine(); System.out.println(calculateCombinations(booklet.length())); } } private static long calculateCombinations(int n){ return (long) (n+1)*26-n; } }
package cn.bubbletg2.t01; import java.util.Scanner; public class Main { public static void main(String[] args) { String s = new Scanner(System.in).next(); int length = s.length(); if (length < 1 || length >= 20) return; int j = 0; for (int i = 1; i <= 26; i++) { /** * length + 1 表示每次可以插入位置个数, 只有一个 a -a- 可以 ab 或者ba 两个位置 * 长度为2时。 -a-b- 插入位置为3 * * 为什么要26次?因为题目中已经给出 aa 也算,所有 其实相当于26个都可以进行。 */ j += (length + 1); } /** *为什么j- length 如题, _a_ 可以前后两个位置插入,但是插入a 时, aa 与 aa 算同一个 * 若 _a_b_ 我们插入一个a 可能结果有 aab aab aba 我们在插入一个b aab abb abb * 可以发现: aab 与 aab 和 abb abb 重复了 长度为多少,重复多少次。所以减去长度。 */ System.out.println(j - length); } }
欢迎各位指点批评。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = s.next(); int n = str.length(); // 输入的字符串长度 // 非法输入处理 if (n < 1 || n>20) { System.out.println("非法输入"); return; } System.out.println(26*(n+1)-n); } }
/* 26个字母轮流***去。 原字符串中有几个字符和插入字符一样,就会有几个插入效果相同,所以要减去。 */ import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.next(); int len = s.length(); int ans = 0; int cnt = 0; String tmp = "abcdefghijklmnopqrstuvwxyz"; for (int i = 0; i < 26; i++) { cnt = 0; for (int j = 0; j < len; j++) { if (tmp.charAt(i) == s.charAt(j)) cnt++; } ans += len + 1 - cnt; } System.out.println(ans); } }