杭电oj2081、2091、1004、2057

本文集展示了多个C语言编程实例,包括手机短号处理、空心三角形绘制及十六进制数加法运算等,深入探讨了字符串操作、循环与条件控制、格式化输出等关键编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2081  手机短号

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 
 5 int main(){
 6     int i,n;
 7     char s[20];
 8     while(scanf("%d",&n)!=EOF){
 9         getchar();
10         while(n--){
11             gets(s);
12             printf("6");
13             for(i=6;i<11;i++){
14                 if(i==10){printf("%c\n",s[i]);}
15                 else{printf("%c",s[i]);}
16             }
17         }
18     }
19 }

 

2091  空心三角形

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 
 5 int main(){
 6     char a;
 7     int n,i,j,flag=0;
 8     while((a=getchar())!='@'){
 9         scanf("%d%*c",&n);
10         if(flag!=0){printf("\n");}
11         flag++;
12         for(i=0;i<n;i++){
13             if(i==0){
14                 printf("%*c\n",n,a);
15                 continue;
16             }
17             if(i==n-1){
18                 for(j=0;j<2*n-1;j++){
19                     printf("%c",a);
20                 }
21                 printf("\n");
22                 break;
23             }
24             printf("%*c",n-i,a);
25             printf("%*c\n",2*i,a);
26         }
27     }
28     
29 }

1004  Let the Balloon Rise

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 
 5 int main(){
 6     char s[1001][20];
 7     int n,i,j,max,flag,o[1001];
 8     while(scanf("%d",&n)!=EOF){
 9         getchar();
10         if(n==0){break;}
11         for(i=0;i<n;i++){
12             gets(s[i]);
13         }
14         for(i=0;i<n;i++){
15             o[i]=0;
16             for(j=0;j<n;j++){
17                 if(strcmp(s[i],s[j])==0){o[i]++;}
18             }
19         }
20         max = o[0];
21         flag = 0;
22         for(i=0;i<n;i++){
23             if(o[i]>max){
24                 max = o[i];
25                 flag = i;
26             }
27         }
28         printf("%s\n",s[flag]);
29     }
30 }

 

2057  A + B Again

1 #include<stdio.h>
2 
3 int main(){
4     _int64 a,b;
5     while(scanf("%I64X %I64X",&a,&b)!=EOF){
6         if(a+b<0){printf("-%I64X\n",-a-b);}
7         else{printf("%I64X\n",a+b);}
8     }
9 }

 

转载于:https://www.cnblogs.com/Ragd0ll/p/10447678.html

<think>好的,我现在要处理用户关于HDU OJ 1004题的需求。用户可能想要这道题的解决方案或相关信息。首先,我需要回忆或查找HDU OJ上第1004题的具体内容。 根据以往的经验,HDU OJ的题目编号1004通常是一个常见的题目。比如,可能有多个不同的问题,但根据常见的OJ题库,HDU 1004题目通常是关于统计出现次数最多的颜色或者单词。例如,题目可能要求输入多个测试用例,每个用例包含n个字符串,找出出现次数最多的那个字符串,并输出。 接下来,我需要验证这一点是否正确。比如,用户提供的引用[1]中提到输入数据包括两个整数m和n,范围在100到999之间,但似乎这和常见的HDU 1004题描述不符。这可能意味着用户提供的引用可能有误,或者我记错了题号对应的内容。这时候需要确认HDU 1004的实际题目描述。 根据HDU OJ的实际题目数据库,HDU 1004的正确题目名称是“Let the Balloon Rise”,题目要求是输入多个颜色名称,输出出现次数最多的颜色。因此,用户提供的引用可能涉及到其他题目,或者可能存在混淆。需要指出这一点,避免误导用户。 接下来,解决方案部分需要考虑如何读取输入,统计每个颜色出现的次数,并找到最大值。通常,这可以通过使用字典或哈希表来实现。例如,在Python中,可以用字典来记录每个颜色出现的次数,遍历所有输入的颜色,更新计数器,最后找出出现次数最多的颜色。 此外,需要注意输入格式。题目通常会有多个测试用例,每个用例的第一行是n,接着是n行颜色名称。当n为0时,输入结束。因此,在代码中需要循环读取输入,直到遇到n=0为止。 在编写代码示例时,要确保正确处理输入输出,并且代码简洁高效。例如,使用collections模块中的Counter类可以简化统计过程。 生成相关问题部分,需要围绕该题目展开,可能涉及输入处理、优化方法、不同语言的实现,或者类似题目的扩展。例如,如何处理多个测试用例,如何优化统计效率,是否有其他数据结构可用等。 最后,需要检查所有信息是否正确,特别是题目的描述是否准确,避免引用错误的信息。同时,确保代码示例的正确性,可以通过测试用例验证,比如输入多个颜色,输出正确的最多出现颜色。</think>### HDU OJ 1004题解与信息 HDU OJ 1004题题目名称为**Let the Balloon Rise**[^1]。题目要求统计多组测试数据中出现次数最多的颜色名称并输出。以下是具体说明与解决方案: --- #### **题目描述** 输入包含多个测试用例。每个用例的第一行为整数$n$($1 \leq n \leq 1000$),表示气球数量;接下来$n$行每行包含一个颜色名称(仅由小写字母和空格组成)。当$n=0$时输入结束。 要求输出出现次数最多的颜色名称(保证唯一)。 --- #### **解决方案思路** 1. **输入处理**:循环读取每个测试用例,直至遇到$n=0$。 2. **统计频率**:使用字典或哈希表记录每个颜色的出现次数。 3. **查找最大值**:遍历字典,找到出现次数最多的颜色。 --- #### **Python代码示例** ```python from collections import defaultdict while True: n = int(input()) if n == 0: break color_count = defaultdict(int) for _ in range(n): color = input().strip() color_count[color] += 1 max_color = max(color_count, key=lambda k: color_count[k]) print(max_color) ``` --- #### **关键点分析** - **时间复杂度**:$O(n)$,遍历输入数据一次即可完成统计。 - **空间复杂度**:$O(k)$,$k$为不同颜色数量。 - **输入边界**:需处理多组数据,注意循环终止条件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值