日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客 华为机试(我的代码记录)

發(fā)布時間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客 华为机试(我的代码记录) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://www.nowcoder.com/ta/huawei

編譯器信息 版本:clang++3.9,采用c++11標(biāo)準(zhǔn),編譯的時候采用-O2級優(yōu)化,支持萬能頭文件 <bits/stdc++.h>。 輸入輸出處理 1. 核心代碼模式處理 不需要處理任何輸入輸出,直接返回值即可。 2. ACM 模式 你的代碼需要處理輸入輸出,請使用如下樣例代碼讀取輸入和打印輸出: #include <iostream> using namespace std;int main() {int a, b;while (cin >> a >> b) { // 注意 while 處理多個 casecout << a + b << endl;} } // 64 位輸出請用 printf("%lld")

文章目錄

    • HJ7 取近似值
    • HJ15 求int型正整數(shù)在內(nèi)存中存儲時1的個數(shù)
    • HJ11 數(shù)字顛倒
    • HJ12 字符串反轉(zhuǎn)
    • HJ22 汽水瓶
      • 實質(zhì)上就是2瓶換1汽水(不包含瓶子)
    • HJ37 統(tǒng)計每個月兔子的總數(shù)
      • (找到結(jié)論:tuzi(month) = tuzi(month - 1) + tuzi(month - 2))
    • HJ50 四則運(yùn)算

HJ7 取近似值

描述
寫出一個程序,接受一個正浮點(diǎn)數(shù)值,輸出該數(shù)值的近似整數(shù)值。如果小數(shù)點(diǎn)后數(shù)值大于等于5,向上取整;小于5,則向下取整。

輸入描述:
輸入一個正浮點(diǎn)數(shù)值

輸出描述:
輸出該數(shù)值的近似整數(shù)值

示例1
輸入:5.5
輸出:6

#include <stdio.h> int main(){float num;scanf("%f", &num);printf("%d\n", (int)(num+0.5));return 0; }

HJ15 求int型正整數(shù)在內(nèi)存中存儲時1的個數(shù)

描述
輸入一個int型的正整數(shù),計算出該int型數(shù)據(jù)在內(nèi)存中存儲時1的個數(shù)。

輸入描述:
輸入一個整數(shù)(int類型)

輸出描述:
這個數(shù)轉(zhuǎn)換成2進(jìn)制后,輸出1的個數(shù)

示例1
輸入:5
輸出:2

#include <stdio.h> int main(){int num;scanf("%d", &num);int count = 0;while (true){if (num%2==1)count+=1;num=num/2;if(num==0)break;}printf("%d\n", count);return 0; }

HJ11 數(shù)字顛倒

描述
輸入一個整數(shù),將這個整數(shù)以字符串的形式逆序輸出
程序不考慮負(fù)數(shù)的情況,若數(shù)字含有0,則逆序形式也含有0,如輸入為100,則輸出為001

輸入描述:
輸入一個int整數(shù)

輸出描述:
將這個整數(shù)以字符串的形式逆序輸出

示例1
輸入:1516000
輸出:0006151

#include <stdio.h>void print_num(int* num) {printf("%d", *num % 10);*num /= 10; }int main() {int num;scanf("%d", &num);do {print_num(&num);} while (num / 10 != 0);print_num(&num);return 0; }

HJ12 字符串反轉(zhuǎn)

描述
接受一個只包含小寫字母的字符串,然后輸出該字符串反轉(zhuǎn)后的字符串。(字符串長度不超過1000)

輸入描述:
輸入一行,為一個只包含小寫字母的字符串。

輸出描述:
輸出該字符串反轉(zhuǎn)后的字符串。

示例1
輸入:abcd
輸出:dcba

#include <stdio.h> #include <string.h>int main() {char c[1000] = {0};scanf("%s", &c, sizeof(c));int i = 0;while (strlen(c) - i > 0) {printf("%c", c[strlen(c) - i - 1]);i++;}return 0; }

HJ22 汽水瓶

描述
有這樣一道智力題:“某商店規(guī)定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶,方法如下:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以后4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然后你讓老板先借給你一瓶汽水,喝掉這瓶滿的,喝完以后用3個空瓶子換一瓶滿的還給老板。如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝?

輸入描述:
輸入文件最多包含10組測試數(shù)據(jù),每個數(shù)據(jù)占一行,僅包含一個正整數(shù)n(1<=n<=100),表示小張手上的空汽水瓶數(shù)。n=0表示輸入結(jié)束,你的程序不應(yīng)當(dāng)處理這一行。

輸出描述:
對于每組測試數(shù)據(jù),輸出一行,表示最多可以喝的汽水瓶數(shù)。如果一瓶也喝不到,輸出0。

輸入: 3 10 81 0輸出: 1 5 40 #include <stdio.h> #include <string.h>int main() {int array[10] = { 0 };int n = 0, i = 0, len = 0;while (true) {scanf("%d", &n);if (n == 0)break;array[i] = n;i++;len++;}int k = 0;i = 0;while (k < len) {printf("%d\n", array[i] / 2);k++;i++;}return 0; }

實質(zhì)上就是2瓶換1汽水(不包含瓶子)

HJ37 統(tǒng)計每個月兔子的總數(shù)

(找到結(jié)論:tuzi(month) = tuzi(month - 1) + tuzi(month - 2))

描述
有一只兔子,從出生后第3個月起每個月都生一只兔子,小兔子長到第三個月后每個月又生一只兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?

本題有多組數(shù)據(jù)。

輸入描述:
輸入int型表示month

輸出描述:
輸出兔子總數(shù)int型

示例1
輸入:9
輸出:34

#include <stdio.h> #include <string.h>int tuzi(int month) {if (month == 1 or month == 2)return 1;if (month >=3) {int num = 1;int i = 0;while (month - i > 2) { i++;num += tuzi(i); }return num;} }int main() {/*int month = 0;scanf_s("%d", &month);printf("%d\n", tuzi(month));return 0;*/int month = 0;while (true) {scanf_s("%d", &month);printf("%d\n", tuzi(month));}return 0; }

結(jié)果:

1 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 9 34

額,,,,跑不過,說我復(fù)雜度太大了。。。。也是

運(yùn)行超時 運(yùn)行超時:您的程序未能在規(guī)定時間內(nèi)運(yùn)行結(jié)束,請檢查是否循環(huán)有錯或算法復(fù)雜度過大。 答案錯誤 運(yùn)行時間 1001ms 占用內(nèi)存 0KB

找到結(jié)論:tuzi(month) = tuzi(month - 1) + tuzi(month - 2)

#include <stdio.h> #include <string.h>int tuzi(int month) {if (month == 1 or month == 2)return 1;if (month >=3) {return tuzi(month - 1) + tuzi(month - 2);} }int main() {int month = 0;scanf("%d", &month);printf("%d\n", tuzi(month));return 0; }

還是不行?不支持批量驗證??

那改成這樣就好了

#include <stdio.h> #include <string.h>int tuzi(int month) {if (month == 1 or month == 2)return 1;if (month >=3) {return tuzi(month - 1) + tuzi(month - 2);} }int main() {int month = 0;while(scanf("%d", &month)!=EOF){printf("%d\n", tuzi(month));}return 0; }

HJ50 四則運(yùn)算

描述
輸入一個表達(dá)式(用字符串表示),求這個表達(dá)式的值。
保證字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表達(dá)式一定合法。

輸入描述:
輸入一個算術(shù)表達(dá)式

輸出描述:
得到計算結(jié)果

示例1
輸入:3+2*{1+2*[-4/(8-6)+7]}
輸出:25

總結(jié)

以上是生活随笔為你收集整理的牛客 华为机试(我的代码记录)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。