1. 程式人生 > >牛客網——2017校招真題線上程式設計(python&C++)

牛客網——2017校招真題線上程式設計(python&C++)

牛客網——2017校招真題線上程式設計(python&C++)

題目描述

找出n個數裡最小的k個

輸入描述:

每個測試輸入包含空格分割的n+1個整數,最後一個整數為k值,n
不超過100。

輸出描述:

輸出n個整數裡最小的k個數。升序輸出
示例1

輸入

3 9 6 8 -10 7 -11 19 30 12 23 5

輸出

-11 -10 3 6 7

python3:

def findminK(arr,K):
    res = sorted(arr)
    return res[:K]

if __name__ == "__main__":
    try:
        while True:
            arr = [int(t) for t in input("").split()]
            print(" ".join(str(i) for i in findminK(arr[:-1],arr[-1]))) 
    except:
        pass

2、求數列的和

題目描述

數列的第一項為n,以後各項為前一項的平方根,求數列的前m項的和。

輸入描述:

輸入資料有多組,每組佔一行,由兩個整數n(n < 10000)和m(m < 1000)組成,n和m的含義如前所述。

輸出描述:

對於每組輸入資料,輸出該數列的和,每個測試例項佔一行,要求精度保留2位小數。
示例1

輸入

81 4
2 2

輸出

94.73
3.41

Python程式碼:

import sys
import math

def getSum(num1, num2):
    sum = 0
    if num1 < 0 or num1 >= 10000:
        return sum
    if num1 == 0:
        return sum
    if num2 <= 0 or num2 >= 1000:
        return -1
    if (num1 > 0 and num1 < 10000) and (num2 > 0 and num2 < 1000):
        sum = num1
        for i in range(num2-1):
            sum = sum + math.sqrt(num1)
            num1 = math.sqrt(num1)
    return sum

if __name__ == '__main__':
    try:
        while True:
            arr1 = [int(t) for t in sys.stdin.readline().split()]
            arr2 = [int(t) for t in sys.stdin.readline().split()]
            print("%.2f" % getSum(arr1[0], arr1[1]))
            print("%.2f" % getSum(arr2[0], arr2[1]))
    except:
        pass

4、分蘋果

題目描述

n 只奶牛坐在一排,每個奶牛擁有 ai 個蘋果,現在你要在它們之間轉移蘋果,使得最後所有奶牛擁有的蘋果數都相同,每一次,你只能從一隻奶牛身上拿走恰好兩個蘋果到另一個奶牛上,問最少需要移動多少次可以平分蘋果,如果方案不存在輸出 -1。

輸入描述:

每個輸入包含一個測試用例。每個測試用例的第一行包含一個整數 n(1 <= n <= 100),接下來的一行包含 n 個整數 ai(1 <= ai <= 100)。

輸出描述:

輸出一行表示最少需要移動多少次可以平分蘋果,如果方案不存在則輸出 -1。
示例1

輸入

4
7 15 9 5

輸出

3

C++程式碼:

#include <iostream>
 
using namespace std;
 
int main()
{
    int num;
    cin>>num;
    int a[num];
    long long sum = 0,count = 0;
    for(int i=0;i<num;i++){
        cin>>a[i];
        sum += a[i];
    }
    bool flag = true;
    if(sum%num == 0){
        int average = sum/num;
        for(int i=0;i<num;i++){
            if(a[i] > average){
                if((a[i]-average)%2 == 0){
                    count += (a[i]-average)/2;
                }
                else{
                    flag = false;
                    break;
                }
            }
        }
    }
    else
        flag = false;
 
    if(flag){
        cout<<count<<endl;
    }
    else
        cout<<"-1"<<endl;
 
    return 0;
}

5、數字翻轉

題目描述

對於一個整數X,定義操作rev(X)為將X按數位翻轉過來,並且去除掉前導0。例如:
如果 X = 123,則rev(X) = 321;
如果 X = 100,則rev(X) = 1.
現在給出整數x和y,要求rev(rev(x) + rev(y))為多少?

輸入描述:

輸入為一行,x、y(1 ≤ x、y ≤ 1000),以空格隔開。

輸出描述:

輸出rev(rev(x) + rev(y))的值
示例1

輸入

123 100

輸出

223

python程式碼:

def rev(num):
    tmp = []
    sum = 0
    for i in range(len(str(num))):
        tmp.append(num//pow(10,i)%10)
        sorted(tmp)
    for i in range(len(tmp)):
        sum += tmp[len(tmp)-i-1]*pow(10,i)
    return sum

if __name__=='__main__':
    try:
        while True:
            arr = [int(t) for t in input('').split()]
            print(rev(rev(arr[0])+rev(arr[1])))
    except:
        pass

題目描述

輸入n個整數,輸出出現次數大於等於陣列長度一半的數。

輸入描述:

每個測試輸入包含 n個空格分割的n個整數,n不超過100,其中有一個整數出現次數大於等於n/2。

輸出描述:

輸出出現次數大於等於n/2的數。
示例1

輸入

3 9 3 2 5 6 7 3 2 3 3 3

輸出

3

python3程式碼:

def getCondNumber(arr):
    res = []
    if len(arr)==1:
        res.append(arr[0])
        return res

    sorted(arr) #排序
    arr1 = list(set(arr)) #去重複

    for i in range(len(arr1)):
        count = 0
        for j in range(len(arr)):
            if arr1[i]==arr[j]:
                count+=1
        if count>=len(arr)/2:
            res.append(arr1[i])
    return res

if __name__=='__main__':
    try:
        while True:
            arr = [int(t) for t in input('').split()]
            res = getCondNumber(arr)
            print(" ".join(str(i) for i in res))
    except:
        pass

7、素數對

題目描述

給定一個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。
如,輸入為10, 程式應該輸出結果為2。(共有兩對質數的和為10,分別為(5,5),(3,7))

輸入描述:

輸入包括一個整數n,(3 ≤ n < 1000)

輸出描述:

輸出對數
示例1

輸入

10

輸出

2

python3程式碼:

import math

def isPrime(num):
    if num > 1:
        for i in range(2, int(math.sqrt(num))+1):
            if (num % i) == 0:
                return False
                break
        else:
            return True
    else:
        return False

def getPrimeNumber(num):
    count = 0
    for i in range(2, num//2+1):
        if isPrime(i) and isPrime(num - i):
            count += 1
    return count

if __name__ == '__main__':
    try:
        while True:
            num = int(input(""))
            res = getPrimeNumber(num)
            print(res)
    except:
        pass

相關推薦

——2017線上程式設計python&C++

牛客網——2017校招真題線上程式設計(python&C++)題目描述找出n個數裡最小的k個輸入描述:每個測試輸入包含空格分割的n+1個整數,最後一個整數為k值,n 不超過100。輸出描述:輸出

筆記:2017線上程式設計——數串

題目 題目描述 設有n個正整數,將他們連線成一排,組成一個最大的多位整數。 如:n=3時,3個整數13,312,343,連成的最大整數為34331213。 如:n=4時,4個整數7,13,4,246連線成的最大整數為7424613。 輸

2017線上程式設計 異或

思路: 將每個數字造成字典樹的一條鏈。每次查詢時,如果當前位置上m是0,那麼必定可以取a[i]的相反值。 如果m在這個位置上是1,那就必須取與a[i]在當前位置上的相反值 #include <

2017在線編程-幸運的袋子

emp push_back main urn sum ews bject ret tor 題目描述 一個袋子裏面有n個球,每個球上面都有一個號碼(擁有相同號碼的球是無區別的)。如果一個袋子是幸運的當且僅當所有球的號碼的和大於所有球的號碼的積。例如:如果袋子裏面的球的號碼是

2017 -騰訊-編碼

class btn -h aaa 函數 字典序排序 -o stream title 題目描述 假定一種編碼的編碼範圍是a ~ y的25個字母,從1位到4位的編碼,如果我們把該編碼按字典序排序,形成一個數組如下: a, aa, aaa, aaaa, aaab, aaac,

—頭條

題目描述 頭條的2017校招開始了!為了這次校招,我們組織了一個規模巨集大的出題團隊,每個出題人都出了一些有趣的題目,而我們現在想把這些題目組合成若干場考試出來,在選題之前,我們對題目進行了盲審,並定出了每道題的難度系統。一場考試包含3道開放性題目,假設他們的難度從小到大分

一個數變為斐波那契數列數

題目描述 Fibonacci數列是這樣定義的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci數列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci數列

訓練 j 莫隊

時間限制:C/C++ 2秒,其他語言4秒 空間限制:C/C++ 524288K,其他語言1048576K 64bit IO Format: %lld 題目描述 Given a sequence

聯通圖形(去哪兒2017)

題目描述 思路分析 對於輸入的一行資料, 使用正則表示式將其拆分為字串陣列,對字串陣列中的每個元素進行如下操作: 給定一個佇列,一個順序表,佇列用於存放當前元素,順序表用於存放其他元素,

訓練第一場 I - Substring後綴數組 + 重復處理

.com get 處理 man string target span roman targe 鏈接: https://www.nowcoder.com/acm/contest/139/I 題意: 牛客網多校訓練第一場 I - Substring(後綴數組 + 重復處理

訓練營第五場gpa01分數規劃

01分數規劃 01分數規劃問題:所謂的01分數規劃問題就是指這樣的一類問題,給定兩個陣列,a[i]表示選取i的收益,b[i]表示選取i的代價。如果選取i,定義x[i]=1否則x[i]=0。每一個物品只有選或者不選兩種方案,求一個選擇方案使得R=sigma(a[i]*x[

】NOIP賽前集訓營-提高組第二場

AAA 中位數 題目描述 小N得到了一個非常神奇的序列 AAA 。這個序列長度為 NNN ,下標從 111 開始。 AAA 的一個子區間對應一個序列,可以由數對 [l,r][l,r][l,r] 表示,代表 A[l],A[l+1],...,A[r]A[l], A

頭條今日頭條20171——python解法

題目描述 頭條的2017校招開始了!為了這次校招,我們組織了一個規模巨集大的出題團隊。每個出題人都出了一些有趣的題目,而我們現在想把這些題目組合成若干場考試出來。在選題之前,我們對題目進行了盲審,並定出了每道題的難度係數。一場考試包含3道開放性題目,假設他們的難度從小到大分別為a, b, c,我

采購單京東2017

python 格式本來也不算很難的一道題,但是總是只通過60% 或者 80%一眼就看出思路,代碼也不難的題就是不能全部通過也是神煩,應該是格式上的問題,也不算完全弄明白了,簡單說說,作為一種經驗。思路:給價錢 和 每種物品的個數排序 最貴:最高價買最多的物品,累加 最低:最低價買最多的物品

小米2017——電話號碼分身問題Java版

imp spa ray 描述 mov lose port next can 原題描述如下: 通過對各個數字對應的英文單詞的分析,可以發現一些規律: 字母Z為0獨占,字母W為2獨占,字母U為4獨占,字母X為6獨占,字母G為8獨占; 在過濾一遍0、2、4、6、8後,字母O為1

訓練 道路問題

一個 question 有道 void lib 以及 -h 測試 iostream 題目描述 隨著如今社會的不斷變化,交通問題也變得越來越重要,所以市長決定建設一些公路來方便各個城市之間的貿易和交易。雖然市長的想法很好,但是他也遇到了一般人也經常頭疼的問題,那就是手頭

訓練 訓練技巧

bits 輸入 targe 單個 sdn namespace 能力 tps i+1 題目描述 來源 常州大學組織了新生寒假訓練一共N天,每天訓練可以獲得的訓練效果是Ei。但是如果連續訓練超過K天,萌新們會受不了而被勸退。 現在負責人想知道,如何安排能保證萌新不會被勸退

訓練 酸堿滴定

itl code spa 簡單 等於 con 數據 aid 輸入 題目描述 題目來源 有時候你會抱怨,什麽時候才能到終點。 有時候你會迫不及待,怎麽顏色還不改變。 滴定管長場的,我們的路長長的。 用心的放入每一滴,終點就在你手心。 今天小星需要去完成一個酸堿滴定實

訓練 德瑪西亞萬歲

while 關系 out iostream 整數 戰鬥 來源 示例 -m 題目描述 來源 德瑪西亞是一個實力雄厚、奉公守法的國家,有著功勛卓著的光榮軍史。 這裏非常重視正義、榮耀、職責的意識形態,這裏的人民為此感到強烈自豪。 有一天他們想去制裁邪惡的比爾吉沃特,於是

第五場

scanner ima one bigint cos system image style util A:gpa 分數規劃裸題了吧,然後二分次數過多的話會超時 #include<cstdio> #include<cstdlib> #includ