huawei 三套题

链接:https://www.nowcoder.com/questionTerminal/fe298c55694f4ed39e256170ff2c205f

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?

输入描述:

输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。

输出描述:

对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。

示例1

输入

3
10
81
0

输出

1
5
40

自己写的 
 1 #include <iostream>
 2 using namespace  std;
 3
 4 int main()
 5 {
 6     int m=10, n;
 7         while (m--&&cin >> n&&n >= 1 && n <= 100)
 8         {
 9                 int Y = 0;
10                 int sum = 0;
11                 while (n >= 3)
12                 {
13                     sum += n / 3;
14                     n = n / 3 + n % 3;
15                 }
16                 if (n == 2)
17                 {
18                     sum += 1;
19                 }
20                 if (n == 1);
21                 cout << sum << endl;
22                 sum = 0;
23         }
24     return 0;
25 }

 1 链接:https://www.nowcoder.com/questionTerminal/fe298c55694f4ed39e256170ff2c205f
 2 来源:牛客网
 3
 4 /*
 5 递归问题
 6 3个瓶子换1瓶水+1个空瓶子,两个瓶子换1瓶水+0个空瓶子,1个瓶子换0瓶水。
 7 f(1) = 0
 8 f(2) = 1
 9 f(3) = 1
10 f(4) = f(2)+1    //4个瓶子,其中3个可以换1瓶水+1个空瓶,所以是f(2)+1
11 f(5) = f(3)+1    //3个瓶子换1瓶水+1个空瓶,所以是f(3)+1
12 ...
13 f(n) = f(n-2)+1 */
14 #include <iostream>
15   
16 using namespace std;
17   
18 int f(int n)
19 {
20     if(n==1) return 0;
21     if(n==2) return 1;
22     return f(n-2)+1;
23 }
24   
25 int main()
26 {
27     int n;
28     while(cin >> n){
29         if(n==0)
30             break;
31         cout<<f(n)<<endl;
32     }
33     return 0;
34 }

链接:https://www.nowcoder.com/questionTerminal/3245215fffb84b7b81285493eae92ff0
来源:牛客网

[编程题]明明的随机数

  • 热度指数:204271
    时间限制:1秒
    空间限制:32768K
  • 算法知识视频讲解

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

Input Param

n               输入随机数的个数

inputArray      n个随机整数组成的数组

Return Value

OutputArray    输出处理后的随机整数

注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。

输入描述:

输入多行,先输入随机整数的个数,再输入相应个数的整数

输出描述:

返回多行,处理后的结果

示例1

输入

11
10
20
40
32
67
40
20
89
300
400
15

输出

10
15
20
32
40
67
89
300
400


注意输入输出 
 1 链接:https://www.nowcoder.com/questionTerminal/3245215fffb84b7b81285493eae92ff0
 2 来源:牛客网
 3
 4 #include <iostream>
 5 using namespace std;
 6 int main() {
 7     int N, n;
 8     while (cin >> N) {
 9         int a[1001] = { 0 };
10         while (N--) {
11             cin >> n;
12             a[n] = 1;
13         }
14         for (int i = 0; i < 1001; i++)
15             if (a[i])
16                 cout << i << endl;
17     }
18     return 0;
19 }//阿西吧

链接:https://www.nowcoder.com/questionTerminal/8f3df50d2b9043208c5eed283d1d4da6
来源:牛客网

[编程题]进制转换

  • 热度指数:101092
    时间限制:1秒
    空间限制:32768K
  • 算法知识视频讲解

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。

示例1

输入

0xA

输出

10
 1 只是将字符串转换成十进制的数,程序就能通过,看来题目的目的只是将十六进制转换成十进制
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<math.h>
 5 int main()
 6 {
 7     char str[100];
 8     int i=0,count,sum;
 9     while(gets(str))//用于多次输入
10     {
11         count=strlen(str);//计算字符串的长度
12         sum=0;
13         for(i=count-1;i>=0;i--)//从十六进制个位开始,每位都转换成十进制
14         {
15         if(str[i]>=‘0‘&&str[i]<=‘9‘)//数字字符的转换
16         {
17             sum+=(str[i]-48)*pow(16,count-i-1);
18         }
19         else if(str[i]>=‘A‘&&str[i]<=‘F‘)//字母字符的转换
20         {
21             sum+=(str[i]-55)*pow(16,count-i-1);
22         }
23         }
24         printf("%d\n",sum);
25     }
26     return 0;
27  }
 1 链接:https://www.nowcoder.com/questionTerminal/8f3df50d2b9043208c5eed283d1d4da6
 2 来源:牛客网
 3
 4 #include <iostream>
 5  using namespace std;
 6
 7  int main()
 8  {
 9      int a;
10      while(cin>>hex>>a){
11      cout<<a<<endl;
12      }
时间: 2024-12-08 18:41:28

huawei 三套题的相关文章

清北第三套题

                                                  铺瓷砖                                (tile.cpp/c/pas)[问题描述]    有一面很长很长的墙. 你需要在这面墙上贴上两行瓷砖. 你的手头有两种不同尺寸的瓷砖,你希望用这两种瓷砖各贴一行.瓷砖的长可以用分数表示,贴在第一行的每块瓷砖长度为 AB ,贴在第二行的每块瓷砖长度为CD .本问题中你并不需要关心瓷砖的宽度.    如上图所示, 两排瓷砖从同一起

应试教育:你是在“套题”还是在“解决问题”?

?为什么当初会采用"背题型"的方式? ?"背题型"的局限性在哪? ?建构"知识体系"优势在哪? ?"题海战术"的认知错误 ?学习和考试的本质 声明:此文纯属个人学习方法总结. 1.为什么当初会采用"背题型"的方式? 以前上了高中,由于身边学霸太多,为了急于缩短与他们之间的天壤之别,总想着调整自己的学习方法. 本来自己就没什么学习方法,加上老师布置下做不完的题目,况且时常听到"题海战术"的

套题T6

过节(festival.cpp/c/pas) Dxy帮老师们过教师节的时候需要购买礼物.货架上有n 种礼物,每种礼物有不同的个数.每种礼物有价值和花费两种属性,帮他算出最大可以得到的价值.M是带的钱数有多少 Input: 第一行两个数n,m 第2到n+1行:每行三个数a,b,c,表示一种礼物的个数,花费和价值.   Output: 最大可得价值.   样例输入: 1  1 1  1  1   样例输出: 1 a*b(mod.cpp/c/pas) 没错dxy的题目就是这么简单. 输入: 第一行一个

套题T4

Problem 1 无聊的gcd(gcd.c/cpp/pas) 话说出题人不会被查水表吧. 简单的问题描述:从N个正整数里面取出K个数的最大公因数最大是多少.(请将答案乘上k之后输出哦,谢谢合作.) 输入格式 第一行两个正整数N,K. 第二行n个正整数 输出格式 输出一个正整数表示最大的最大公因数. 样例输入 3 1 1 2 3 样例输出 3 数据说明 对于30%的数据,保证k≤n≤20. 对于50%的数据,保证输入中所有数小于5000. 对于100%的数据,保证输入中所有数小于500000,k

套题T5//各种树

树(tree) [题目描述] 方方方种下了三棵树,一年后,第一棵树长出了n个节点. 方方方会向你提出m个询问,每个询问给出两个数i,j,你需要回答i号节点和j号节点在树上的距离. [输入数据] 第一行两个整数n,m.接下来n-1行每行两个整数a,b表示一条边.接下来m行每行两个整数i,j表示询问. [输出数据] m行,每行一个整数表示答案. [样例输入] 3 2 1 2 1 3 3 2 1 1 [样例输出] 2 0 [数据范围] 对于30%的数据,n,m<=1000. 对于100%的数据,n,m

2017年8月14日套题记录 | 普及组

写在前面 今天登洛谷发现离Noip剩下88天了??(虽然看起有点久),然后觉得似乎水了一个暑假什么也没做(虽然学了点数据结构和一些奇奇Gaygay的东西),于是打开题库发现去年Long Happy的集训套题我似乎没有提交过,那就一天一套题,顺便码个题解+心得(雾? T2.传作业 题目描述 某十三同学一日上学迟到,此时已经开始上早自习了,所以他只好请同学帮忙把作业传到组长那里.由于刚开学不久,某十三同学还没来得及认识所有同学,所以传作业时只好找熟悉的同学.已知某十三与组长之间有N个他熟悉的同学,并

第三套一

#include <stdio.h> void fun(char *s, int *t) { int i, n; n=0; for(i=0; s[i] !=0; i++) if(s[i]>='0'&&s[i]<= '9') n++; *t=n ; } main() { char s[80]="abcdef35adgh3kjsdf7"; int t; printf("\nThe original string is : %s\n"

第三套二

#include <stdio.h> int fun(int *x,int y) { int t ; t = *x ; *x = y ; return(t) ; } main() { int a = 3, b = 8 ; printf("%d %d\n", a, b) ; b = fun(&a, b) ; printf("%d %d\n", a, b) ; } 第三套二,布布扣,bubuko.com

第三套三

#include <stdio.h> void fun (int *a, int *n) { int i,j=0; for(i=1;i<=1000;i++) if((i%7==0||i%11==0)&&i%77!=0) a[j++]=i; *n=j; } main( ) { int aa[1000], n, k ; void NONO ( ); fun ( aa, &n ) ; for ( k = 0 ; k < n ; k++ ) if((k + 1) %