08简单推导:手机尾号评分

【题目】 
30年的改革开放,给中国带来了翻天覆地的变化。2011全年中国手机产量约为11.72亿部。手机已经成为百姓的基本日用品! 
给手机选个好听又好记的号码可能是许多人的心愿。 
但号源有限,只能辅以有偿选号的方法了。 
这个程序的目的就是:根据给定的手机尾号(4位),按照一定的规则来打分。其规则如下: 
1. 如果出现连号,不管升序还是降序,都加5分。例如:5678,4321都满足加分标准。 
2. 前三个数字相同,或后三个数字相同,都加3分。例如:4888,6665,7777都满足加分的标准。 
注意:7777因为满足这条标准两次,所以这条规则给它加了6分。 
3. 符合AABB或者ABAB模式的加1分。例如:2255,3939,7777都符合这个模式,所以都被加分。 
注意:7777因为满足这条标准两次,所以这条标准给它加了2分。 
4. 含有:6,8,9中任何一个数字,每出现一次加1分。例如4326,6875,9918都符合加分标准。其中,6875被加2分;9918被加3分。 
尾号最终得分就是每条标准的加分总和! 
要求程序从标准输入接收数据,在标准输出上输出结果。 
输入格式为:第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行4位一组的数据,就是等待计算加分的手机尾号。 
例如,输入: 
14 
3045 
…. 
….. 
6789 
8866 
则输出: 


…. 
… 

5

 public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String[] sa = new String[n];
        //循环获取所有的手机尾号
        for (int i = 0; i < n; i++) {
            sa[i] = sc.next();
        }
        sc.close();
        for (int i = 0; i < n; i++) {
            System.out.println(handlerPN(sa[i]));
        }

    }

    //对每一个手机尾号进行评分
    private static int handlerPN(String s){
        int result = 0;

        char[] cc = s.toCharArray();
        int[] ic = new int[cc.length];

        for (int i = 0; i < ic.length; i++) {
            ic[i] = cc[i] - ‘0‘;
        }

        //1、判断是否存在连号
        boolean lh = true;
        for (int i = 0; i < ic.length-1; i++) {
            if(Math.abs(ic[i+1]-ic[i]) != 1){
                lh = false;
                break;
            }
        }

        if(lh){
            result += 5;
        }

        //2、判断前三后三是否相同
        if((ic[0]==ic[1]&&ic[1]==ic[2])){
            result += 3;
        }

        if((ic[1]==ic[2]&&ic[2]==ic[3])){
            result += 3;
        }

        //3、判断是否符合AABB或者ABAB
        if(ic[0]==ic[1] && ic[2]==ic[3]){
            result += 1;
        }

        if(ic[0]==ic[2] && ic[1]==ic[3]){
            result += 1;
        }

        //4、是否出现6、8、9的数字
        for (int i = 0; i < ic.length; i++) {
            if(ic[i] == 6 || ic[i] ==8 || ic[i]==9){
                result += 1;
            }
        }

        return result;
    }

  

import java.util.*;
public class Lanq {
    //1534
    public static void main(String[] args) {
        solve();
        // check();
    }

    public static void solve() {
        Scanner sc = new Scanner(System.in);
        int test = sc.nextInt();
        while (test-- > 0) {
            String ans = sc.next();
            int sum=0;
           char  []a=new char[4];
           a=ans.toCharArray();

            if(a[0]+1==a[1]&&a[1]+1==a[2]&&a[2]+1==a[3])sum+=5;
            if(a[0]-1==a[1]&&a[1]-1==a[2]&&a[2]-1==a[3])sum+=5;
            if(a[0]==a[1]&&a[1]==a[2])sum+=3;
            if(a[1]==a[2]&&a[2]==a[3])sum+=3;
            if(a[0]==a[1]&&a[2]==a[3])sum+=1;
            if(a[0]==a[2]&&a[1]==a[3])sum+=1;
            if(a[0]==‘6‘||a[0]==‘8‘||a[0]==‘9‘)sum+=1;
            if(a[1]==‘6‘||a[1]==‘8‘||a[1]==‘9‘)sum+=1;
            if(a[2]==‘6‘||a[2]==‘8‘||a[2]==‘9‘)sum+=1;
            if(a[3]==‘6‘||a[3]==‘8‘||a[3]==‘9‘)sum+=1;
            System.out.println(sum);
        }
    }

  

原文地址:https://www.cnblogs.com/passion-sky/p/8541934.html

时间: 2024-08-11 22:38:09

08简单推导:手机尾号评分的相关文章

烟大ACM新秀赛 E手机尾号评分

Description 30年的改革开放,给中国带来了翻天覆地的变化.2011全年中国手机产量约为11.72亿部.手机已经成为百姓的基本日用品! 给手机选个好听又好记的号码可能是许多人的心愿.但号源有限,只能辅以有偿选号的方法了. 这个程序的目的就是:根据给定的手机尾号(4位),按照一定的规则来打分.其规则如下: 1. 如果出现连号,不管升序还是降序,都加5分.例如:5678,4321都满足加分标准. 2. 前三个数字相同,或后三个数字相同,都加3分.例如:4888,6665,7777都满足加分

取快递的数学问题:手机尾号的重复概率

学校门口,四位手机尾号取快递.问:设有 \(n\) 个包裹,则存在两个包裹号码(收件人手机尾号,假设均匀分布)相同的概率 \(P(n)\) 是多少? 答曰:手机尾号一共有 \(10^4=10000\) 个,所以 \( P(n)=\frac{A_{10000}^n}{(10000)^n} \), 其中 \(A_n^r\) 为排列数. 求出表达式非常简单,然而计算具体值时却遇到了麻烦:分子和分母都太大了,IEEE 754 浮点数受不了了,直接扔给我个 Infinity. 怎么办呢?把排列数展开,取对

YTUOJ-手机尾号评分

题目描述 30年的改革开放,给中国带来了翻天覆地的变化.2011全年中国手机产量约为11.72亿部.手机已经成为百姓的基本日用品! 给手机选个好听又好记的号码可能是许多人的心愿.但号源有限,只能辅以有偿选号的方法了. 这个程序的目的就是:根据给定的手机尾号(4位),按照一定的规则来打分.其规则如下: 1. 如果出现连号,不管升序还是降序,都加5分.例如:5678,4321都满足加分标准. 2. 前三个数字相同,或后三个数字相同,都加3分.例如:4888,6665,7777都满足加分的标准.注意:

第三届蓝桥杯javaC组_手机尾号

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: 蓝桥杯赛题 * 作    者:   彭俊豪 * 完成日期:   2016   年 04月 01日 * 版 本 号:      001 * 对任务及求解方法的描述部分 * 问题描述: 30年的改革开放,给中国带来了翻天覆地的变化.2011全年中国手机产量约为11.72亿部.手机已经成为百姓的基本日用品

卡尔曼滤波器的简单推导

本文将简单推导卡尔曼滤波器的预测和更新公式.为了简单,使用标量(一维向量)而不是向量,并且假设系统没有输入. 系统状态的理论值如下: $x_k=\Phi_k x_{k-1}+w_k$ 但是由于过程噪声和观测噪声的存在,系统状态的真实值是不可知的.但我们仍可以根据以下思路,尽量跟踪真实值: 1) 状态转换系数是已知的,因此我们可以根据上一状态得到当前状态的先验估计: $\hat{x}_k^-=\Phi_k \hat{x}_{k-1}$ 2) 将对当前状态的先验估计$\hat{x}_k^-$变换到对

1101: 零起点学算法08——简单的输入和计算(a+b)

1101: 零起点学算法08--简单的输入和计算(a+b) Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: 3669  Accepted: 1997[Submit][Status][Web Board] Description 前面7道题做下来,对输出和计算有点感觉了吧? 不过很可惜的是前面的做法,好像太死了,写了一个计算3+4的程序,计算5+6又得改程序,计算机真的只能这么实现,那么我们比计算机

利用KBEngine +U3D 做的一个简单MMO手游Demo

利用KBE +U3D 做的一个简单MMO手游Demo目前只完成到一个普通攻击和一个火球术,  火球术需要点击怪物后才能释放.点击npc后会跳到一个副本.里面有一只半兽人. 欢迎大家来试玩 并提出宝贵意见.http://pan.baidu.com/s/1dDtVjnb 感谢kbe 一直以来的帮助.

简单盘点手游开发引擎(欢迎补充)

无论是2D游戏还是3D游戏,游戏引擎都充当着游戏骨架的角色,没有游戏引擎就无法做出一款真正的游戏,通过游戏引擎制作者可以把画面.剧情.关卡.操作等元素拼接在一起,成为一款完整的游戏,同时赋予制作者实现其设计理想的可能性. 游戏引擎的功能丰富程度.画面表现力与拓展性,对于游戏的最终品质有很大的影响,于是商业引擎便开始崭露头角,Unity3D.Cocos2d.UDK, libgdx.OGEngine等这些知名引擎的名字,也逐渐被一般玩家所熟知. 下面我就简单整理下游戏引擎,欢迎大家补充: cocos

[.NET] 简单接入微信公众号开发:实现自动回复

简单接入微信公众号开发:实现自动回复 一.前提 先申请微信公众号的授权,找到或配置几个关键的信息(开发者ID.开发者密码.IP白名单.令牌和消息加解密密钥等). 二.基本配置信息解读 开发者ID:固定的: 开发者密码:自己扫一下就可以看到: IP白名单:设置自己配置服务器的地址: 服务器地址(URL):稍后详解: 令牌:随便写,按规则: 消息加解密密钥:随便写,或者随机生成: 三.配置服务器地址(URL) 服务器地址(URL)应该怎么配置呢?图片上的配置的地址是:http://www.nidie