首页 > 代码库 > huawei 三套题
huawei 三套题
链接:https://www.nowcoder.com/questionTerminal/fe298c55694f4ed39e256170ff2c205f
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
输入描述:
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。
输出描述:
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
输入
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 输出处理后的随机整数
注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。
输入描述:
输入多行,先输入随机整数的个数,再输入相应个数的整数
输出描述:
返回多行,处理后的结果
输入
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
- 算法知识视频讲解
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
输入
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 }
huawei 三套题