手机尾号评分

手机尾号评分

时间: 1ms        内存:128M

描述:

    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位一组的数据,就是等待计算加分的手机尾号。

输出:

n行整数。

示例输入:

14
3045
0211
2345
6543
7777
8888
7878
7788
6688
2424
2244
9918
6789
8866

示例输出:

0
0
5
6
8
12
3
3
5
1
1
3
8
5

提示:

参考答案(内存最优[752]):

#include <stdio.h>
void main()
{
    int a,b,c,d,e,sum,x,n;
    scanf("%d",&n);
    for(x=0;x<n;x++)
    {
    scanf("%d",&a);
    b=a/1000;
        c=a/100-b*10;
        d=a/10-b*100-c*10;
        e=a-b*1000-c*100-d*10;
    sum=0;
    if(b==c+1&&c==d+1&&d==e+1)
        sum+=5;
        if(b==c-1&&c==d-1&&d==e-1)
        sum+=5;
        if(b==c&&c==d)
        sum+=3;
        if(c==d&&d==e)
        sum+=3;
        if(b==c&&d==e)
        sum+=1;
        if(b==d&&c==e)
        sum+=1;
        if(c==6||c==8||c==9)
        sum+=1;
        if(d==6||d==8||d==9)
        sum+=1;
        if(e==6||e==8||e==9)
        sum+=1;
        if(b==6||b==8||b==9)
        sum+=1;
     printf("%d\n",sum);
    }
} 

参考答案(时间最优[0]):

#include <iostream>
using namespace std;
int main()
{
 int n,c;
 int i1,i2,i3,i4;
 int sum1,sum2,sum22,sum3,sum4;
 cin>>n;
 while (n<100&&n--)
 {
  sum1=0,sum2=0,sum3=0,sum4=0;
  cin>>c;
  i1=c/1000;
  i2=(c-i1*1000)/100;
  i3=(c-i1*1000-i2*100)/10;
  i4=c%10;
  //--------------------第一条
  if((i1==i2+1&&i2==i3+1&&i3==i4+1)||(i1==i2-1&&i2==i3-1&&i3==i4-1))
  sum1=sum1+5;
  else 
  sum1=sum1+0;
  //-------------------第二条
  if((i1==i2&&i2==i3&&i3!=i4)||(i1!=i2&&i2==i3&&i3==i4))
  sum1=sum1+3;
  else 
  sum1=sum1+0;
  if(i1==i2&&i2==i3&&i3==i4)
  sum1=sum1+6;
  else 
   sum1=sum1+0;
  //-------------------第三条
  if((i2!=i3&&i1==i2&&i3==i4)||(i2!=i3&&i1==i3&&i2==i4))
  sum1=sum1+1;
  else if(i2==i3&&i1==i2&&i3==i4)
   sum1=sum1+2;
  else 
   sum1=sum1+0;
  //-------------------第四条
  if(i1==6||i1==8||i1==9)
  sum1=sum1+1;
  else sum1=sum1+0;
  if(i2==6||i2==8||i2==9)
  sum1=sum1+1;
  else sum1=sum1+0;
   if(i3==6||i3==8||i3==9)
  sum1=sum1+1;
   else sum1=sum1+0;
  if(i4==6||i4==8||i4==9)
  sum1=sum1+1;
  else sum1=sum1+0;
  cout<<sum1<<endl;
 }

 return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注