首页 > 试题广场 >

游戏海报

[编程题]游戏海报
  • 热度指数:9934 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
小明有 26 种游戏海报,用小写字母 "a" 到 "z" 表示。小明会把游戏海报装订成册(可能有重复的海报),册子可以用一个字符串来表示,每个字符就表示对应的海报,例如 abcdea 。小明现在想做一些“特别版”,然后卖掉。特别版就是会从所有海报(26种)中随机选一张,加入到册子的任意一个位置。
那现在小明手里已经有一种海报册子,再插入一张新的海报后,他一共可以组成多少不同的海报册子呢?

数据范围:输入的字符串长度满足

输入描述:
海报册子的字符串表示


输出描述:
一个整数,表示可以组成的不同的海报册子种类数
示例1

输入

a

输出

51

说明

我们可以组成 'ab','ac',...,'az','ba','ca',...,'za' 还有 'aa', 一共 51 种不同的海报册子。 
print(25*len(input().rstrip()) + 26)
发表于 2021-04-03 15:05:46 回复(0)
# 除了(首部)第一个空位能放26种,其它每个空位只能放25
print(26 + len(input())*25)
发表于 2020-04-28 23:50:51 回复(0)
string1=input()
length=len(string1)
set1=set()
for i in range(length+1):
    for j in range(ord('a'),ord('z')+1):
        l1 = list(string1)
        l1.insert(i,chr(j))
        temp=''.join(l1)
        if temp not in set1:
            set1.add(temp)
print(len(set1))
本题很简单,两层循环,第一个循环是可插入位置,第二个是可插入字母,采用的是ord,后期还可以转化为char型
发表于 2020-04-21 18:06:35 回复(0)
计算式:26*(len(a) + 1) - len(a) -> 25*len(a) + 26
推倒过程:
1. "a",左右都可插入26个字母,因此为26(1+1);减去重复计算的次数,1次。
2. "aa", 左中右,26(1+1+1);减去重复,2次。
以此类推,得 26*(len(a) + 1) - len(a)

C:
#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)
编辑于 2020-04-06 16:35:35 回复(0)
def zuhe(s) :
    input_list = [i for i in s]
    output_list = list()
    alpha_table = [chr(i) for i in range(97,123)]
    for insert in alpha_table :
        for i in range(len(input_list) + 1) :
            input_copy = input_list.copy()
            input_copy.insert(i,insert)
            output_list.append(''.join(input_copy))
    return len(list(set(output_list)))
s = input()
print (zuhe(s))
发表于 2019-08-22 17:43:04 回复(0)
while True:
    try:
        s = input()
        if not s:
            print(26)
        else:
            total = []
            begin = 'a'
            end = 'z'
            length = len(s)
            s_li = list(s)
            for word in range(ord('a'), ord('z')+1, 1):
                word = chr(word)
                for i in range(len(s_li)+1):
                    s_li.insert(i, word)
                    total.append(''.join(s_li))
                    s_li = list(s)
        total = list(set(total))
        print(len(total))
    except:
        break
发表于 2019-08-08 23:37:33 回复(0)
"""
可在 (len(s) + 1)个位置插入26字符中的一个,
当插入相同字符时,放在前后只算一个,括号里表示插入的字符
例如 (a)aaa,a(a)aa,aa(a)a,aaa(a), 原来基础上减len('aaa')
"""
import sys

if __name__ == "__main__":
    # sys.stdin = open("input.txt", "r")
    s = input().strip()
    ans = (len(s) + 1) * 26 - len(s)
    print(ans)

发表于 2019-07-09 13:16:11 回复(2)
import sys
for line in sys.stdin:
    msize = len(line)-1
    print((msize+1)*26-msize)
这是一道排列问题,其中有固定顺序的字符串我们只需要知道他的长度即可,然后根据长度计算可以插空的位置个数再减去重复次数即可,例如字符串"a"在左边插入a和右边插入a都是"aa"因此重复了一次,可以推断重复次数和字符串个数相同。
发表于 2019-06-28 00:45:56 回复(0)