Problem Description

输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。

Input

输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。

Output

对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。

Sample Input

3 3 -4 2

4 0 1 2 -3

0

Sample Output

-4 3 2

-3 2 1 0

用一个结构体储存原本的值以及绝对值,然后以绝对值为标准进行排序,最后输出原值

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. int n;
  8. struct node{
  9. int num;
  10. int absnum;
  11. }a[101];
  12. bool cmp(node x, node y) {
  13. return x.absnum > y.absnum;
  14. }
  15. int main() {
  16. while (scanf("%d", &n) != EOF) {
  17. if (n == 0) break;
  18. for (int i = 1; i <= n; i++) {
  19. scanf("%d", &a[i].num);
  20. a[i].absnum = abs(a[i].num);
  21. }
  22. sort(a + 1, a + 1 + n, cmp);
  23. for (int i = 1; i <= n; i++)
  24. if (i != n) printf("%d ", a[i].num);
  25. else printf("%d\n", a[i].num);
  26. }
  27. return 0;
  28. }

Problem Description

作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵

但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?

这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。

Input

输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。

n=0表示输入的结束,不做处理。

Output

对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。

Sample Input

3

1 2 3

0

Sample Output

4

能拿最大的就要最大的,最大的钱给不开再给小的,就这样算就好了

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. int n, m, sum, ans;
  8. int main() {
  9. while (scanf("%d", &n) != EOF) {
  10. if (n == 0) break;
  11. ans = 0;
  12. for (int i = 1; i <= n; i++) {
  13. scanf("%d", &m);
  14. sum = 0;
  15. sum += m / 100 + m % 100 / 50 + m % 100 % 50 / 10 + m % 100 % 50 % 10 / 5 + m % 100 % 50 % 10 % 5 / 2 + m % 100 % 50 % 10 % 5 % 2;
  16. ans += sum;
  17. }
  18. printf("%d\n", ans);
  19. }
  20. return 0;
  21. }

Problem Description

potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。

“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato老师很是无奈。

“张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。

嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《杭电记忆——回来我的爱》。

说干就干,马上海选女主角(和老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有ac的基本功,否则直接out!

由于策划师风之鱼(大师级水王)宣传到位,来应聘的MM很多,当然包括nit的蛋糕妹妹等呼声很高的美女,就连zjut的jqw都男扮女装来应聘(还好被安全顾问hdu_Bin-Laden认出,给轰走了),看来娱乐圈比acm还吸引人哪...

面试那天,刚好来了mn个MM,站成一个mn的队列,副导演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的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。

Sample Input

2 3

1 4 -3

-7 3 0

Sample Output

2 1 -7

好长的题干......没什么好说的,找一个绝对值最大的,不断更新最大值所在的行、列

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. int n, m, a[101][101], maxx, maxi, maxj;
  8. int main() {
  9. while (scanf("%d%d", &n, &m) != EOF) {
  10. maxx = 0;
  11. for (int i = 1; i <= n; i++)
  12. for (int j = 1; j <= m; j++) {
  13. scanf("%d", &a[i][j]);
  14. if (abs(a[i][j]) > maxx) {
  15. maxi = i;
  16. maxj = j;
  17. maxx = abs(a[i][j]);
  18. }
  19. }
  20. printf("%d %d ", maxi, maxj);
  21. printf("%d\n", a[maxi][maxj]);
  22. }
  23. return 0;
  24. }

Problem Description

假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。

Input

输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。

Output

对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,表示该班级中各科成绩均大于等于平均成绩的学生数量。

每个测试实例后面跟一个空行。

Sample Input

2 2

5 10

10 20

Sample Output

7.50 15.00

7.50 15.00

1

先求出学生平均值、每门课的平均值,然后从头搜一遍求出人数

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. double n, m, singlesum[101], subjectsum[101], a[101][101];
  8. int ans, cnt;
  9. int main() {
  10. while (scanf("%lf%lf", &n, &m) != EOF) {
  11. memset(singlesum, 0, sizeof(singlesum));
  12. memset(subjectsum, 0, sizeof(subjectsum));
  13. for (int i = 1; i <= n; i++)
  14. for (int j = 1; j <= m; j++) {
  15. scanf("%lf", &a[i][j]);
  16. singlesum[i] += a[i][j];
  17. subjectsum[j] += a[i][j];
  18. }
  19. for (int i = 1; i <= n; i++)
  20. if (i != n) printf("%.2lf ", singlesum[i] / m);
  21. else printf("%.2lf\n", singlesum[i] / m);
  22. for (int i = 1; i <= m; i++)
  23. if (i != m) printf("%.2lf ", subjectsum[i] / n);
  24. else printf("%.2lf\n", subjectsum[i] / n);
  25. for (int i = 1; i <= n; i++) {
  26. for (int j = 1; j <= m; j++) {
  27. if (a[i][j] >= subjectsum[j] / n) cnt++;
  28. }
  29. if (cnt == m) ans++;
  30. cnt = 0;
  31. }
  32. printf("%d\n\n", ans);
  33. ans = 0;
  34. }
  35. return 0;
  36. }

Problem Description

输入一个字符串,判断其是否是C的合法标识符。

Input

输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。

Output

对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。

Sample Input

3

12ajf

fi8x_a

ff ai_2

Sample Output

no

yes

no

就判断一个制胡窜是不是合法的标识符呗,标识符合不合法应该在C语言课开始的几节课就讲过了吧

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <string>
  5. #include <algorithm>
  6. #include <bits/stdc++.h>
  7. using namespace std;
  8. int n;
  9. int main() {
  10. while (scanf("%d", &n) != EOF) {
  11. getchar();
  12. for (int i = 1; i <= n; i++) {
  13. char c[101];
  14. gets(c);
  15. int flag = 0;
  16. for (int j = 0; j < strlen(c); j++) {
  17. if(!((c[j] >= '0' && c[j] <= '9') || (c[j] >= 'A' && c[j] <= 'Z') || (c[j] >= 'a' && c[j] <= 'z') || (c[j] == '_'))) {
  18. flag = 1;
  19. break;
  20. }
  21. if ((c[0] >= '0' && c[0] <= '9' && j == 0)) {
  22. flag = 1;
  23. break;
  24. }
  25. }
  26. if (flag == 0) printf("yes\n");
  27. if (flag == 1) printf("no\n");
  28. }
  29. }
  30. return 0;
  31. }

Problem Description

对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。

Input

输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。

Output

对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。

Sample Input

abcdefgfedcba

xxxxx

Sample Output

abcdefg(max)fedcba

x(max)x(max)x(max)x(max)x(max)

记录下最大的字母,输出的时候在字母后面跟着输出(max)就好

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. char a[101], maxx;
  8. int main() {
  9. while (gets(a)) {
  10. int len = strlen(a);
  11. maxx = a[0];
  12. for (int i = 0; i < len; i++)
  13. if (maxx < a[i]) maxx = a[i];
  14. for (int i = 0; i < len; i++) {
  15. cout << a[i];
  16. if (a[i] == maxx) cout << "(max)";
  17. }
  18. cout << endl;
  19. }
  20. return 0;
  21. }

Problem Description

输入一个英文句子,将每个单词的第一个字母改成大写字母。

Input

输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。

Output

请输出按照要求改写后的英文句子。

Sample Input

i like acm

i want to get an accepted

Sample Output

I Like Acm

I Want To Get An Accepted

如题所示,把第一个字母以及每个空格后的第一个字母变为大写即可

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. char a[101];
  8. int main() {
  9. while (gets(a)) {
  10. int len = strlen(a);
  11. a[0] -= 32;
  12. for (int i = 0; i < len; i++) {
  13. if (a[i] == ' ') a[i + 1] -= 32;
  14. cout << a[i];
  15. }
  16. cout << endl;
  17. }
  18. return 0;
  19. }

Problem Description

统计每个元音字母在字符串中出现的次数。

Input

输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串。

Output

对于每个测试实例输出5行,格式如下:

a:num1

e:num2

i:num3

o:num4

u:num5

多个测试实例之间由一个空行隔开。

请特别注意:最后一块输出后面没有空行:)

Sample Input

2

aeiou

my name is ignatius

Sample Output

a:1

e:1

i:1

o:1

u:1

(这里有个空行,为了排版我加了这行字qwq)

a:2

e:1

i:3

o:0

u:1

统计每个元音出现的个数即可

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. int n, num1, num2, num3, num4, num5;
  8. char a[101];
  9. int main() {
  10. scanf("%d", &n);
  11. getchar();
  12. while (n--) {
  13. gets(a);
  14. num1 = num2 = num3 = num4 = num5 = 0;
  15. int len = strlen(a);
  16. for (int i = 0; i < len; i++) {
  17. if (a[i] == 'a') num1++;
  18. if (a[i] == 'e') num2++;
  19. if (a[i] == 'i') num3++;
  20. if (a[i] == 'o') num4++;
  21. if (a[i] == 'u') num5++;
  22. }
  23. printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n", num1, num2, num3, num4, num5);
  24. if (n != 0) cout << endl;
  25. }
  26. return 0;
  27. }

Problem Description

求n个数的最小公倍数。

Input

输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。

Output

为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。

Sample Input

2 4 6

3 2 5 7

Sample Output

12

70

很直白的求最小公倍数问题,关于最小公倍数,正好前不久刚在洛谷上做到一个题P1572 计算分数也是不错的

说实在的整理时看到自己的代码吃了一惊,不明白当时为什么要这么写......在原有代码上稍作改动,除去了一些冗杂的部分,提交后也是正确的

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. int n, x, y;
  8. int gcd(int x, int y) {
  9. return y ? gcd(y, x % y) : x;
  10. }
  11. int main() {
  12. while (scanf("%d", &n) != EOF) {
  13. scanf("%d", &x);
  14. for (int i = 1; i < n; i++) {
  15. scanf("%d", &y);
  16. x = x / gcd(x, y) * y;
  17. }
  18. printf("%d\n", x);
  19. }
  20. return 0;
  21. }

Problem Description

“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。

Input

输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。

Output

如果一个字符串是回文串,则输出"yes",否则输出"no".

Sample Input

4

level

abcde

noon

haha

Sample Output

yes

no

yes

no

回文串,很经典的东西

用另一个数组储存倒着的样子,然后逐位比较,最后一样的字母的和与制胡窜长度相同的话就是回文串了

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. int n;
  8. char a[1001], b[1001];
  9. int main() {
  10. while (scanf("%d", &n) != EOF) {
  11. getchar();
  12. while (n--) {
  13. int cnt = 0;
  14. gets(a);
  15. int len = strlen(a);
  16. for (int i = 0; i < len; i++)
  17. b[i] = a[len - 1 - i];
  18. for (int i = 0; i < len; i++)
  19. if (a[i] == b[i]) cnt++;
  20. if (cnt != len) cout << "no" << endl;
  21. else cout << "yes" << endl;
  22. }
  23. }
  24. return 0;
  25. }

HDU100题简要题解(2020~2029)的更多相关文章

  1. HDU100题简要题解(2060~2069)

    这十题感觉是100题内相对较为麻烦的,有点搞我心态... HDU2060 Snooker 题目链接 Problem Description background: Philip likes to pl ...

  2. HDU100题简要题解(2080~2089)

    //2089之前忘做了,周二C语言课上做,至于2086,写题解的时候突然发现之前的做法是错的,新的解法交上去CE,等周二再弄吧,其余题目暂时可以放心 HDU2080 夹角有多大II 题目链接 Prob ...

  3. HDU100题简要题解(2070~2079)

    HDU2070 Fibbonacci Number 题目链接 Problem Description Your objective for this question is to develop a ...

  4. HDU100题简要题解(2050~2059)

    HDU2050 折线分割平面 题目链接 Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以 ...

  5. HDU100题简要题解(2000~2009)

    前言(废话): 从11月6号到11月20号,断断续续做了有三个星期,总算整完了,之后会慢慢整理汇总到这里 中间部分用到数学知识的十几道题边学边做直接把我这个数学菜鸟做到怀疑人生 11.6~11.10又 ...

  6. HDU100题简要题解(2040~2049)

    HDU2040 亲和数 题目链接 Problem Description 古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+2 ...

  7. HDU100题简要题解(2030~2039)

    HDU2030 汉字统计 题目链接 Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output ...

  8. HDU100题简要题解(2010~2019)

    HDU2010 水仙花数 题目链接 Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个 ...

  9. 【HNOI2019】部分题简要题解

    题意懒得写了 LOJ Day 1 T1 鱼 个人做法比较猎奇,如果有哪位大佬会证明能分享一下的话感激不尽. 题解:枚举鱼尾和鱼身的交点D,将所有其他点按照到D的距离排序,距离相同的分一组. 感性的理解 ...

随机推荐

  1. php生成器 yield 转

    一.yield介绍  文档介绍说道:生成器函数的核心是yield关键字.它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给 ...

  2. 利用Docker搭建开发环境

    一. 前言 随着平台的不断壮大,项目的研发对于开发人员而言,对于外部各类环境的依赖逐渐增加,特别是针对基础服务的依赖.这些现象导致开 发人员常常是为了简单从而直接使用公有的基础组件进行协同开发,在出现 ...

  3. SSM中 spring.xml 配置文件

    <!--扫描service的impl--><context:component-scan base-package="com.aaa.ssm.service.impl&qu ...

  4. Java 8新特性--Stream API

    Java 8 API添加了一个新的抽象称为流Stream,以一种声明的方式处理数据,可以极大提高程序员的生产力,写出高效.干净.简洁的代码.这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可 ...

  5. 深信服edr 2020HW行动0day 漏洞细节

    漏洞1 一下4个漏洞触发都在其他文件,这里只进行漏洞点的分析. 漏洞点tool\log\c.php 启动c.php大约140行-148行 这里执行了两个方法 show_form 与main 这里追踪s ...

  6. Redis常用命令(1)——Key

    DEL 格式:DEL key [key ...] 作用:删除一个或多个 key.不存在的 key 会被忽略. 返回值:被删除 key 的数量. 示例: 192.168.1.100:6379> s ...

  7. Java学习的第五十二天

    1.例9.4对象数组的使用方法 public class Cjava { public static void main(String[]args) { Box b[] = {new Box(10,1 ...

  8. Maven打包过程

    1.安装maven 下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven- ...

  9. 安装Mysql,开发权限,以及复制数据库

    官网下载 https://downloads.mysql.com/archives/community/     解压后安装,管理员身份打开cmd,转到mysql的bin目录,mysqld --ins ...

  10. django支持多语言

    Django支持多语言切换 下面介绍下如何使网站或APP国际化,让其支持多种语言 . 官网 效果 1.创建locale文件夹 先在项目根目录下创建一个名为locale的文件夹,这个文件夹是用来存放dj ...