博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs 3911 QQ价值
阅读量:5337 次
发布时间:2019-06-15

本文共 1400 字,大约阅读时间需要 4 分钟。

题目描述 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
#include
#include
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\n",a[i].name); return 0;}

 

转载于:https://www.cnblogs.com/jyhywh/p/6042390.html

你可能感兴趣的文章
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
京东静态网页练习记录
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
selenium-窗口切换
查看>>
使用vue的v-model自定义 checkbox组件
查看>>
[工具] Sublime Text 使用指南
查看>>