zoukankan      html  css  js  c++  java
  • codevs 3911 QQ价值

    题目描述 Description

    现在的年轻人都有自己的QQ号码,但是每个人的QQ号码不同,因此所产生的QQ“价值”也不同。已知道QQ号码的“价值”是由QQ号码的位数和构成数字大小所决定的。也就是说,QQ号码长度越小,“价值”越大。构成数字越大,“价值”越大。我们规定:

    一个QQ号码的“价值”=(各位数字之和*P(P>0)/QQ号码位数)向下取整

    例如:QQ号码 123456 的“价值”为 (1+2+3+4+5+6)*P/6 向下取整

          QQ号码 1212121 的“价值”为(1+2+1+2+1+2+1)*P/7 向下取整

    输入描述 Input Description

    第一行输入整数N,P;

    接下来的2N行分别输入每个人的名字和QQ号码(名字和QQ号各占一行)

    输出描述 Output Description

    按QQ“价值”由大到小输出名字,(若“价值”相同,按字典序输出)

    样例输入 Sample Input

    3 10

    Drew

    1164371383

    Adam

    1324432934

    Kyle

    578507419

    样例输出 Sample Output

    Kyle

    Drew

    Adam

    数据范围及提示 Data Size & Hint

    0<N<=10000

    0<P<=20

    保证名字长度<500

    保证QQ号码超度<400

    代码:

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int n,p,tot;
    struct node
    {
        char name[501];
        int sum;
    }a[10001];
    bool cmp(const node &x,const node &y)
    {
        if(x.sum!=y.sum)
            return x.sum>y.sum;
        else 
          if(strcmp(x.name,y.name)>0) //如果价值相同,按字典序排序
            return 0;
          else 
            return 1;
    }
    int read()
    {
        int ans=0;
        char x=getchar();
        while(x>'9'||x<'0')
          x=getchar();
        while(x<='9'&&x>='0')
          ans+=(x-'0'),tot++,x=getchar();
        return ans;
    }
    int main()
    {
        int i,j;
        scanf("%d%d",&n,&p);
        for(i=1;i<=n;i++)
        {
            scanf("%s",a[i].name);
            tot=0;
            a[i].sum=read()*p/tot;
        }
        sort(a+1,a+n+1,cmp);
        for(i=1;i<=n;i++)
          printf("%s
    ",a[i].name);
        return 0;
    }
  • 相关阅读:
    ARM9嵌入式学习日志--20170828
    技术积累
    做产品还是做技术?
    python学习之一
    他山之石——面试非技术问题整理(持续更新中)
    他山之石——面试技术问题整理(持续更新中)
    .bss .text和.data简介
    linux学习——大话linux网络
    实用的技术网站
    linux学习——centos minimal安装vim
  • 原文地址:https://www.cnblogs.com/jyhywh/p/6042390.html
Copyright © 2011-2022 走看看