在中国,过春节时人们有给孩子压岁钱(粤语称为利是)的习俗。

最早的压岁钱出现于汉代,又叫压胜钱,并不在市面上流通,而是铸成钱币形式的玩赏物,有避邪的功能。钱币正面一般铸有“万岁千秋”、“去殃除凶”等吉祥话和龙凤、龟蛇、双鱼等吉祥图案。

据说嘉兴府有一户姓管的人家,夫妻老年得子,十分珍爱。在年三十晚上,为防止“祟”来侵扰一直逗孩子玩,小孩用红纸包了八枚铜钱,包了又拆,拆了又包,睡下以后,包着的八枚铜钱就放在枕边。半夜里,一阵阴风吹过,黑矮的小人正要用他的白手摸孩子的头,突然孩子枕边迸出一道金光,祟尖叫着逃跑了。

于是这件事传扬开来,大家纷纷效仿,在大年夜用红纸包上钱给孩子,祟就不敢再来侵扰了。因而人们把这种钱叫“压祟钱”,“祟”与“岁”发音相同,日久天长,就被称为 “压岁钱”了。

现在有 N 个人,他们都有小孩,春节来了,他们要发压岁钱给朋友的小孩,而他们自己的小孩也会收到压岁钱。为了简单,他们在发压岁钱的时候,使用以下的计算方法,譬如某甲有 100 块,它要给另外三个人的小孩发压岁钱,则每个小孩会分到 100/3 = 33 块,剩余的 1 块就不发了。

给你这 N 个人的信息,以及他们把压岁钱发给了谁的小孩,请你计算他们每个人的小孩收到的压岁钱和他们发出去的压岁钱的差额是多少。

输入

第 1 行: 一个整数 N(2 <= N <= 10)
第 2..N+1 行: 每行是一个人名,每个名字不超过 14 个字符
第 N+2..结束: N 组按照以下规则组织的数据:

组中的第一行为送出压岁钱的人名。
第二行包括两个数字,第一个是该人有多少钱(0~2000),第二个是它要把钱发给几个人的小孩,用 NGi表示(0 ≤ NGi≤ N-1).
如果 NGi为非零,则下面的 NGi行会列出接受压岁钱的人的名字。

输入样例

5
dave
laura
owen
vick
amr
dave
200 3
laura
owen
vick
owen
500 1
dave
amr
150 2
vick
owen
laura
0 2
amr
vick
vick
0 0 

输出格式

输出为 N 行,每行上是一个人名与它收到和送出的压岁钱之差额,这两项之间有一个空格。这 N 行的顺序应该和输入中第 2~N+1 行的顺序相同。

输出样例

dave 302 laura 66 owen -359 vick 141 amr -150 
测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 2 以文本方式显示

  1. 5↵
  2. dave↵
  3. laura↵
  4. owen↵
  5. vick↵
  6. amr↵
  7. dave↵
  8. 2003↵
  9. laura↵
  10. owen↵
  11. vick↵
  12. owen↵
  13. 5001↵
  14. dave↵
  15. amr↵
  16. 1502↵
  17. vick↵
  18. owen↵
  19. laura↵
  20. 02↵
  21. amr↵
  22. vick↵
  23. vick↵
  24. 00↵
以文本方式显示

  1. dave302↵
  2. laura66↵
  3. owen-359↵
  4. vick141↵
  5. amr-150↵
1秒 64M 0
这个题如果用map来解决这相对简便,但是使用map解决有一个问题需要注意,就是map内的元素默认是按Key升序排序的,而题目中期待的输出是按照输入的顺序输出,所以需要想办法按输入顺序输出结果map中的元素,网上有人使用重新定义一个struct,在struct中定义一个index,表示key的输入顺序,然后在map中自定义排序规则,使其按照index升序排序,方法见http://www.cnblogs.com/pozen/articles/1429553.html,这种方法固然解决了问题,但是得不偿失,我采用的是重新定义一个字符串数组用于存放name(当然是按输入的顺序存放),输出的时候顺序从该字符串数组中取出元素,然后再去map中获取相应的value(map中根据指定的key获取value很方便,直接用map_name[key])就可以了,这样就解决了问题,代码如下:
// Money.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <iostream> #include <map> #include <string> using namespace std; int main() { //freopen("in.txt","r",stdin); map<string,int>m; map<string,int>::iterator m1_Iter; int n,i = 0,j,money,children; string name,people[10]; cin>>n; while (n--) { cin>>name; people[i++] = name; m[name] = 0; } while (i--) { cin>>name>>money>>children; if (children) { m[name] -= (money / children) * children ; j = children; while (j--) { cin>>name; m[name] += money / children; } } } for (i = 0; people[i] != "\0"; i++ ) { cout<<people[i]<<" "<<m[people[i]]; if (people[i+1] != "\0") cout<<endl; } return 0; }
再附上c语言代码,代码行数相同,采用结构体:
#include <stdio.h> #include <string.h> typedef struct{ char name[14]; int value; }st; int main() { //freopen("in.txt","r",stdin); int n,i = 0,m,j,k = 0,money = 0,children = 0; st people[10]; char name[14]; scanf("%d\n",&n); m = n; while (n--) { scanf("%s",people[i].name); people[i++].value = 0; } while (i--) { scanf("%s\n%d %d",name,&money,&children); if (children) { for (j = 0; ; j++) if (strcmp(people[j].name,name) == 0) break; people[j].value -= (money / children) * children ; j = children; while (j--) { scanf("%s",name); for (k = 0; ; k++) if (strcmp(people[k].name,name) == 0) break; people[k].value += money / children; } } } for (i = 0; i < m; i++ ) printf("%s %d\n",people[i].name,people[i].value); return 0; }

[ACM]恭喜发财 利是窦来相关推荐

  1. 北理工乐学68.恭喜发财 利是窦来

    68. 恭喜发财 利是窦来 成绩 5 开启时间 2022年11月21日 星期一 08:00 折扣 0.8 折扣时间 2022年12月18日 星期日 23:55 允许迟交 否 关闭时间 2022年12月 ...

  2. 66. 【大学】恭喜发财 利是窦来

    在中国,过春节时人们有给孩子压岁钱(粤语称为利是)的习俗. 最早的压岁钱出现于汉代,又叫压胜钱,并不在市面上流通,而是铸成钱币形式的玩赏物,有避邪的功能.钱币正面一般铸有"万岁千秋" ...

  3. 68. 恭喜发财 利是窦来

    在中国,过春节时人们有给孩子压岁钱(粤语称为利是)的习俗. 最早的压岁钱出现于汉代,又叫压胜钱,并不在市面上流通,而是铸成钱币形式的玩赏物,有避邪的功能.钱币正面一般铸有"万岁千秋" ...

  4. 【大学】恭喜发财 利是窦来

    在中国,过春节时人们有给孩子压岁钱(粤语称为利是)的习俗. 最早的压岁钱出现于汉代,又叫压胜钱,并不在市面上流通,而是铸成钱币形式的玩赏物,有避邪的功能.钱币正面一般铸有"万岁千秋" ...

  5. 从指南针到北斗:中国导航系统促进世界互联互通

    6月11日,在维也纳联合国国际会议中心,联合国外层空间事务办公室主任迪皮波(右)参观中国古代计时装置水运仪象台.本报记者 冯雪珺摄 来源:人民日报 核心阅读 中国卫星导航系统管理办公室在维也纳联合国国 ...

  6. [渝粤教育] 四川大学 传统文化与人生修养 参考 资料

    教育 -传统文化与人生修养-章节资料考试资料-四川大学[] 第一章 绪论 测试题 1.[单选题]下列哪项不属于传统的特征? A.传统是历史的 B.传统是革新的 C.传统是延续性的 D.传统是指向未来的 ...

  7. 纸筒制作机器人_5个万圣节小手工,带孩子一起动手制作,简单又有趣!

    在西方国家,除了圣诞节,最受期待的节日莫过于是十月底的万圣节了,提起这个节日,这五大元素可以说是不错的体现:搞怪的南瓜.可爱的蜘蛛.萌萌哒蝙蝠.点睛之笔的蜡烛,以及可以用来迎客的门饰. 今天我们就来带 ...

  8. 李善兰如何用汉字写公式 | 晚清高数课本长什么样?

    咸丰九年李善兰翻译的微积分课本. >>>> 大致上看起来是附图中这样.天地甲乙这些就是 xyz,丄丅是加减号,彳和禾是微积分号(分别取自微积二字的偏旁),讷是 ln(似乎是因为 ...

  9. “一个千古绝伦的大智者”莱布尼茨

    ►哥特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz) 编者按: 莱布尼茨生于德国,成名于法国,因与牛顿的微积分"优先权之争"而与英国学术界纠葛--多才 ...

最新文章

  1. 最前沿:大规模深度强化学习的发展
  2. Android开发--Matrix(二)--实现图片的旋转
  3. 当开启了延迟加载的开关,对象是怎么变成代理对象的?
  4. JSR 303 - Bean Validation 简介及使用方法
  5. GNU make manual 翻译( 一百六十二)
  6. 花书+吴恩达深度学习(十七)序列模型之长短期记忆 LSTM 和门控循环单元 GRU
  7. django-xadmin隐藏菜单不显示
  8. 基于SSM的手机商城
  9. 利用数据细分目标客户群
  10. python炫酷烟花表白源代码-python烟花效果的代码实例
  11. Android:高德定位及搜索周边地址
  12. Windows下错误码全解析
  13. ActiveX控件的MFC设计之旅-第12步 .
  14. [转载]从春招到秋招,一个本科生的求职之路。
  15. 往事如烟 - 老钟11
  16. AFEPack 使用 Tutorial(一):解二维泊松方程
  17. 关于BUUCTF yxx和异性相吸
  18. IXDC 2018 | 互联网金融已入深水区 如何构建新体验
  19. vcs Options
  20. Caused by: java.sql.SQLSyntaxErrorException: Expression #1 of ORDER BY

热门文章

  1. python 享元模式_享元模式(python)
  2. 2021-08-18MySQL 第六章过程式数据库对象.23存储函数,触发器
  3. 介绍深度卷积神经网络中各种类型的模型
  4. Selenium2Library 主要关键字
  5. 拓嘉辰丰电商:多多国际入驻,需要什么资质条件
  6. 格瑞特维推出具有卓越空转承受性的PFA复合材料WR(R) 650
  7. 旋转图片验证码(识别/破解)解决(一)
  8. DropDownList ListBox GridView DataList Repeater FormView DetailsView 数据绑定控件详解
  9. 模拟QQ音乐微信登录界面
  10. 晶振的负载电容和频偏的计算方法总结