空汽水瓶

1人阅读 评论(0) 收藏 举报
分类:

今天做了华为的三道机试题,比较简单:

题目1

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

       题目比较简单,我第一次写的时候以为有多组数据输入,因此没有通过,后来改了输入格式,AC。本题我有两种想法,第一就是while循环直接算,另一种就是找规律,从0个瓶子到10个瓶子,手算一下答案,然后就会发现结果是空瓶数除2即可。

1,2,3,4,5,6,7,8,9,10,11,对应
0,1,1,2,2,3,3,4,4,5,5

代码

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<queue>
#include<algorithm>
#include<math.h>

using namespace std;

int main()
{
    int n;
    int bottom[102];
    cin >> bottom[0];
    int i = 0;
    while (bottom[i] != 0)
    {
        cin >> bottom[++i];

    }
    for (int j = 0; j < i; j++)
    {
        n = bottom[j];
        int num = 0;
        while (n > 2)
        {
            num += n / 3;
            n = (n / 3 + n % 3);
        }
        if (2 == n)
        {
            num++;
        }
        cout << num << endl;
    }
    return 0;
}

题目2

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

       简单的排序,使用sort函数很容易实现。在输出时判断一下是否重复即可。同样第一次提交没有通过,还是输入的问题,这题是多组输入,第一次写了输入一组数据,尴尬。然后看了一下评论,发现一个超级机智的代码,根本不用排序,用一个数组做标记就行了,代码贴在后面(版权是牛客网这道题下面评论第一的人,昵称是:SINGLE、DOG)。

代码

#include<iostream>
//#include<queue>
#include<algorithm>
//#include<math.h>

using namespace std;

int main()
{
    int n;
    int number[1005];
    while (cin >> n)
    {
        for (int i = 0; i < n; i++)
        {
            //number[i] = (rand()) % 1000;
            cin >> number[i];
        }
        sort(number, number + n);
        int temp = 0;
        for (int i = 0; i < n; i++)
        {
            if (number[i] == temp)
            {
                continue;
            }
            cout << number[i] << endl;
            temp = number[i];
        }
    }
    return 0;
}

机智代码

#include <iostream>
using namespace std;
int main() {
    int N, n;
    while (cin >> N) {
        int a[1001] = { 0 };
        while (N--) {
            cin >> n;
            a[n] = 1;
        }
        for (int i = 0; i < 1001; i++)
            if (a[i])
                cout << i << endl;
    }
    return 0;
}//阿西吧

题目3

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

       直接算就行,做完看评论,有一个人直接用了cin的一个用法直接输出结果,也行。还有就是第一次写的时候忘记将字符数字转化为数字,'3'-'0'就是数字3了。strlen()函数的头文件要包含string.h

代码

#include<iostream>
#include <string.h>

//#include<queue>
#include<algorithm>
//#include<math.h>

using namespace std;

int main()
{
    char number16[200];
    while (cin >> number16)
    {
        int length = strlen(number16);
        int power = length-2;
        int number10 = 0;
        for (int i = 2; i < length; i++)
        {
            power--;
            if ('A' == number16[i])
            {
                number10 += (10 * pow(16, power));
                continue;
            }
            if ('B' == number16[i])
            {
                number10 += (11 * pow(16, power));
                continue;
            }
            if ('C' == number16[i])
            {
                number10 += (12 * pow(16, power));
                continue;
            }
            if ('D' == number16[i])
            {
                number10 += (13 * pow(16, power));
                continue;
            }
            if ('E' == number16[i])
            {
                number10 += (14 * pow(16, power));
                continue;
            }
            if ('F' == number16[i])
            {
                number10 += (15 * pow(16, power));
                continue;
            }
            number10 += ((number16[i]-'0') * pow(16, power));
        }
        cout << number10 << endl;
    }
    return 0;
}

       总结一下做这几道简单题的感受,就是如果测试样例一组都没有通过,检查完算法后没有大的问题,那么大概率是输入输出的问题。

查看评论

汽水瓶问题

汽水瓶问题–华为OJ题目题目 描写叙述: 有这样一道智力题:“某商店规定:三个空汽水瓶能够换一瓶汽水。 小张手上有十个空汽水瓶,她最多能够换多少瓶汽水喝?”答案是5瓶,方法例如以下:先用9个空...
  • Kayson12345
  • Kayson12345
  • 2016-07-16 23:15:52
  • 1738

华为笔试题---汽水瓶

[编程题] 汽水瓶有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后...
  • a1103000308
  • a1103000308
  • 2016-09-07 16:29:06
  • 1010

【华为oj】汽水瓶

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个...
  • haoxiaodao
  • haoxiaodao
  • 2015-06-19 16:01:21
  • 1411

华为研发工程师编程题(1)----汽水瓶

试题: 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶. 方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶...
  • qianqin_2014
  • qianqin_2014
  • 2016-04-28 20:31:29
  • 1312

[华为机试练习题]汽水瓶

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个...
  • a342500329a
  • a342500329a
  • 2016-05-08 20:50:06
  • 507

题目描述 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空

输入描述: 输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1 输出描述: 对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。 import...
  • LilyLily_G
  • LilyLily_G
  • 2017-07-29 16:50:14
  • 1948

算法学习【1】三个空汽水瓶可以换一瓶汽水

开始在牛客网上刷题,遇到的第一题是“换汽水”问题:        有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:...
  • tiandawangliang
  • tiandawangliang
  • 2016-01-12 19:45:27
  • 7198

ACM-汽水瓶(C语言基础题)

描述 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子...
  • u012701023
  • u012701023
  • 2015-05-29 11:20:53
  • 1437

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个...
  • yuanmo7915
  • yuanmo7915
  • 2016-08-16 22:18:48
  • 5039

[华为机试练习题]8.汽水瓶

题目描述: 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个...
  • SunnyYoona
  • SunnyYoona
  • 2015-06-29 09:12:45
  • 2316
    个人资料
    持之以恒
    等级:
    访问量: 363
    积分: 267
    排名: 31万+
    文章存档