牛客网-比赛题-A-zzy的小号

牛客网的水题 链接

zzy的小号

题目描述:

学家zzy根据字体的特点,创建了一系列小号… I_Love_Chtholly!
又到了打wannafly的时候,许许多多的大佬准备注册小号开始虐场,zzy也不例外,他发现他的电脑的字体有一个特点!某些不同的字符所显示的是一样的!
满足以下四种情况之一,所显示的字符是一样的

1、两个字符互为英文字母的大小写
2、大写的’i’和小写的’l’
3、大写的’o’和数字’0’
4、基于前三种情况,三个字符a,b,c,如果a和b显示相同,b和c显示相同,那么a和c显示也是相同的
珂学家zzy想知道,对于一个他看起来相同的昵称,有多少个看起来一样的昵称
两个字符串看起來一样当且仅当长度一样且每个对应的位置的字符看起來一样

输入描述:

一个字符串,只包含大小写字母和数字

输出描述:

共一行一个整数,表示看起来一样的昵称数,由于这个数比较大,所以只要求输出模1e9 + 7意义下的解

示例1

输入
abcdl
输出
64

说明
第一个位置、第二个位置、第三个位置、第四个人位置都只有两种显示相同的字符第五个位置有四种显示相同的字符

备注:
字符串长度1<=|S|<=1e5

题解:

简单题,就几种特殊情况

#include<bits/stdc++.h>  
using namespace std;  
typedef long long ll;  
const int inf = 0x3f3f3f3f; 
const int mod=1e9+7;
const int N=1e5+10;
char s[N];
int main()   
{  
    ll ans=1;
    // freopen("shuju.txt","r",stdin);
    cin>>s;
    int len=strlen(s);
    for(int i=0;i<len;i++)
    {
        if(s[i]=='I'||s[i]=='i'||s[i]=='l'||s[i]=='L')
            ans=(ans*4)%mod;
        else if(s[i]=='o'||s[i]=='O'||s[i]=='0')
            ans=(ans*3)%mod;
        else if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
            ans=(ans*2)%mod;
    }
    cout<<ans<<endl;
    return 0;  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值