假期编程
Posted ping2yingshi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了假期编程相关的知识,希望对你有一定的参考价值。
此博客链接:https://www.cnblogs.com/ping2yingshi/p/12268487.html
1.发工资(28min)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2021
Problem Description
作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵
但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?
这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。
但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?
这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。
Input
输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。
n=0表示输入的结束,不做处理。
n=0表示输入的结束,不做处理。
Output
对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。
Sample Input
3
1 2 3
0
Sample Output
4
题解:给老师的工资是最少的钱数而且不找零,这里不知道每个老师的工资到底是多少,但是想要钱数最少,就要先满足面额大的钱,也就是要先找有几个100的面额,然后50的面额,依次类推,直到面额为1,把所有面额的张数加到一起,就是最少的张数。
代码如下:
#include<stdio.h> #include<math.h> #include<stdlib.h> int main(void) { int n; while(~scanf("%d",&n)) { if(n==0) break; int c[100]; int i; int sum=0; for(i=0;i<n;i++) scanf("%d",&c[i]); for(i=0;i<n;i++) { if(c[i]/100!=0) sum=sum+c[i]/100; if(c[i]%100/50!=0) sum=sum+1; if(c[i]%100%50/10!=0) sum=sum+c[i]%100%50/10; if(c[i]%100%50%10/5!=0) sum=sum+1; if(c[i]%100%50%10%5/2!=0) sum=sum+c[i]%100%50%10%5/2; sum=sum+c[i]%100%50%10%5%2; } printf("%d", sum); printf(" "); } return 0; }
2.海选女主角(55min)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2022
Problem Description
potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。
“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato老师很是无奈。
“张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。
嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《杭电记忆——回来我的爱》。
说干就干,马上海选女主角(和老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有ac的基本功,否则直接out!
由于策划师风之鱼(大师级水王)宣传到位,来应聘的MM很多,当然包括nit的蛋糕妹妹等呼声很高的美女,就连zjut的jqw都男扮女装来应聘(还好被安全顾问hdu_Bin-Laden认出,给轰走了),看来娱乐圈比acm还吸引人哪...
面试那天,刚好来了m*n个MM,站成一个m*n的队列,副导演Fe(OH)2为每个MM打了分数,分数都是32位有符号整数。
一开始我很纳闷:分数怎么还有负的?Fe(OH)2解释说,根据选拔规则,头发染成黄色、化妆太浓、穿的太少等等都要扣分数的,扣的多了就可能是负分了,当然,如果发现话语中夹有日语,就直接给-2147483648分了。
分数送上来了,是我做决定的时候了,我的一个选拔原则是,要选一个面试分数绝对值(必须还是32位整数)最大的MM。
特别说明:如果不幸选中一个负分的MM,也没关系,因为我觉得,如果不能吸引你,那要想法恶心你。
“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato老师很是无奈。
“张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。
嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《杭电记忆——回来我的爱》。
说干就干,马上海选女主角(和老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有ac的基本功,否则直接out!
由于策划师风之鱼(大师级水王)宣传到位,来应聘的MM很多,当然包括nit的蛋糕妹妹等呼声很高的美女,就连zjut的jqw都男扮女装来应聘(还好被安全顾问hdu_Bin-Laden认出,给轰走了),看来娱乐圈比acm还吸引人哪...
面试那天,刚好来了m*n个MM,站成一个m*n的队列,副导演Fe(OH)2为每个MM打了分数,分数都是32位有符号整数。
一开始我很纳闷:分数怎么还有负的?Fe(OH)2解释说,根据选拔规则,头发染成黄色、化妆太浓、穿的太少等等都要扣分数的,扣的多了就可能是负分了,当然,如果发现话语中夹有日语,就直接给-2147483648分了。
分数送上来了,是我做决定的时候了,我的一个选拔原则是,要选一个面试分数绝对值(必须还是32位整数)最大的MM。
特别说明:如果不幸选中一个负分的MM,也没关系,因为我觉得,如果不能吸引你,那要想法恶心你。
Input
输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,每行有n个,m和n的定义见题目的描述。
Output
对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。
note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。
note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。
Sample Input
2 3
1 4 -3
-7 3 0
Sample Output
2 1 -7
题解:此题被我写的真是无语了,这道题和绝对值求和好像,这个题目相对更简单一点,只需要找出绝对值最大的成绩,不需要对所有成绩排序,我写了好长时间原因是,判断条件中,并列关系中间没有加括号,但是上一题就加了括号,因为上次我写时,我对象告诉我不需要加括号,但是我加了括号,这次写想想就不没有加,然后并列关系时需要加括号了,我还一直以为是自己逻辑错误,哎,以后不轻易相信别人说的话,除非自己验证过。
代码如下:
#include<stdio.h> #include<math.h> #include<stdlib.h> int main(void) { int n; int m; while(~scanf("%d %d",&m,&n)) { int c[100][100]; int i; int j; int maxw=0; int maxh=0; for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&c[i][j]); for(i=0;i<m;i++) for(j=0;j<n;j++) { if((c[maxw][maxh]>=0)&&(c[i][j]>=0)) { if(c[maxw][maxh]<c[i][j]) { maxw=i; maxh=j; } } else if((c[maxw][maxh]<0)&&(c[i][j]<0)) { if(-c[maxw][maxh]<-c[i][j]) { maxw=i; maxh=j; } } else if((c[maxw][maxh]<0)&&(c[i][j]>0)) { if(-c[maxw][maxh]<c[i][j]) { maxw=i; maxh=j; } } else if((c[maxw][maxh]>0)&&(c[i][j]<0)) { if(c[maxw][maxh]<(-c[i][j])) { maxw=i; maxh=j; } } } printf("%d %d %d",maxw+1,maxh+1,c[maxw][maxh]); printf(" "); } return 0; }
以上是关于假期编程的主要内容,如果未能解决你的问题,请参考以下文章