17校招真題題集(1)1-5

注:本系列題目全是按照通過率降序來排列的,基本保證題目難度遞增。

?

1、

題目名稱:游戲任務標記

來源:騰訊

題目描述

游戲里面有很多各式各樣的任務,其中有一種任務玩家只能做一次,這類任務一共有1024個,任務ID范圍[1,1024]。請用32個unsigned int類型來記錄著1024個任務是否已經完成。初始狀態都是未完成。 輸入兩個參數,都是任務ID,需要設置第一個ID的任務為已經完成;并檢查第二個ID的任務是否已經完成。 輸出一個參數,如果第二個ID的任務已經完成輸出1,如果未完成輸出0。如果第一或第二個ID不在[1,1024]范圍,則輸出-1。

輸入描述:

輸入包括一行,兩個整數表示人物ID.

輸出描述:

輸出是否完成

示例1

輸入

1024 1024

輸出

1

分析:經過(艱難的)讀題,分析出只有兩個數相等,才輸出1,否則第二個ID一定未完成,輸出0,不在范圍輸出-1即可。

p=(input().split())
f,s=int(p[0]),int(p[1])
if f not in range(1,1025) or s not in range(1,1025):print(-1)
elif s==f:print(1)
else:print(0)

當然,這可能不是題目的本意,真的這么寫可能會被打。

1024=32*32,因此可用32個整數表示1024位(因為每個整數32位)
因為任務ID范圍是1~1024,所以減1轉化為0~1023
然后任務ID除以32,商為存到哪個整數,余數為該整數對應位(置1即可)
注:除以32相當于直接右移5位,對32取余相當于"與31"(這個技巧只對2的次方數有效).

#include <iostream>
using namespace std;unsigned int arr[32];int main()
{int id1, id2;while(cin>>id1>>id2){if(!(id2>=1 && id2<=1024)){cout<<-1<<endl;continue;}arr[(id1-1)>>5] |= (1<<(id1&31));cout<<( (arr[(id2-1)>>5] & (1<<(id2&31))) != 0)<<endl;}return 0;
}

?

2、

題目名稱:網絡走法數目

來源:美團

題目描述

有一個X*Y的網格,小團要在此網格上從左上角到右下角,只能走格點且只能向右或向下走。請設計一個算法,計算小團有多少種走法。給定兩個正整數int x,int y,請返回小團的走法數目。

輸入描述:

輸入包括一行,逗號隔開的兩個正整數x和y,取值范圍[1,10]。

輸出描述:

輸出包括一行,為走法的數目。

示例1

輸入

3 2

輸出

10

分析:

函數f(a,b)代表走到坐標(a,b)的走法數目

#include<iostream>
using namespace std;
int step(int m,int n){if(m == 0 || n == 0)return 1;return step(m - 1,n) + step(m,n -1);
}
int main(){int x,y;cin >> x >> y;cout << step(x,y) <<endl;
}

最笨寫法,太多的重復子問題計算

簡單動態規劃

用二維表記錄下來結果,并加以利用。

壓縮:我們發現,除了這個位置上本身的數,DP[i,j]只和DP表中左邊和上邊的值有關,所以可以生成長度為矩陣較小邊長一維表,用兩層循環。注意順序,從左向右打表,只有這樣,左邊的那個元素才是被更新過的,才是本行的左邊那個元素。

l=(input().split())
x,y=int(l[0])+1,int(l[1])+1
l=[0]*x
l[0]=1
for p in range(y):for i in range(1,x):l[i]+=l[i-1]
print(l[-1])

3、

題目名稱:幸運數

來源:京東

題目描述

小明同學學習了不同的進制之后,拿起了一些數字做起了游戲。小明同學知道,在日常生活中我們最常用的是十進制數,而在計算機中,二進制數也很常用。現在對于一個數字x,小明同學定義出了兩個函數f(x)和g(x)。 f(x)表示把x這個數用十進制寫出后各個數位上的數字之和。如f(123)=1+2+3=6。 g(x)表示把x這個數用二進制寫出后各個數位上的數字之和。如123的二進制表示為1111011,那么,g(123)=1+1+1+1+0+1+1=6。 小明同學發現對于一些正整數x滿足f(x)=g(x),他把這種數稱為幸運數,現在他想知道,大于0且小于等于n的幸運數有多少個?

輸入描述:

每組數據輸入一個數n(n<=100000)

輸出描述:

每組數據輸出一行,小于等于n的幸運數個數。

示例1

輸入

21

輸出

3

分析:思想確實不難,按照題目意思走就可以了。實現稍微考察了coding能力吧,就要多練。

給出各種語言的實現:

python:

def f1(n):ret,t=0,nwhile 1:ret+= t%2t=t//2if t==0:breakreturn ret
def f2(n):q=0for i in str(n):q+=int(i)return q
r=int(input())
k=0
for i in range(1,r+1):if f1(i)==f2(i):k+=1
print(k)

java:

package 幸運數;
import java.util.*;
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {int n = in.nextInt();int count = 0;for (int i = 1; i <= n; i++) {if (f(i) == g(i)) {count++;}}System.out.println(count);}}/** 二進制 */private static int g(int n) {int sum = 0;while (n != 0) {sum += n % 2;n /= 2;}return sum;}/** 十進制 */private static int f(int n) {int sum = 0;while (n != 0) {sum += n % 10;n /= 10;}return sum;}
}

c++:

#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<stdlib.h>
#define N 30;
using namespace std;
int f(int i)
{int sum = 0;while(i){sum+=i%10;i/=10;}return sum;
}
int g(int i)
{int sum = 0;for(int j = 1;j<100000;j*=2){if((j&i)==j) sum++;}return sum;
}
int main()
{//cout<<f(123)<<endl;cout<<g(123)<<endl;int n;while(cin>>n){int sum = 0;for(int i = 1;i<=n;i++){if(f(i)==g(i)) {sum++;}}cout<<sum<<endl;}return 0;
}

4、

題目名稱:解救小易

來源:網易

題目描述

有一片1000*1000的草地,小易初始站在(1,1)(最左上角的位置)。小易在每一秒會橫向或者縱向移動到相鄰的草地上吃草(小易不會走出邊界)。大反派超超想去捕捉可愛的小易,他手里有n個陷阱。第i個陷阱被安置在橫坐標為xi?,縱坐標為yi?的位置上,小易一旦走入一個陷阱,將會被超超捕捉。你為了去解救小易,需要知道小易最少多少秒可能會走入一個陷阱,從而提前解救小易。

輸入描述:

第一行為一個整數n(n ≤ 1000),表示超超一共擁有n個陷阱。
第二行有n個整數xi,表示第i個陷阱的橫坐標
第三行有n個整數yi,表示第i個陷阱的縱坐標
保證坐標都在草地范圍內。

輸出描述:

輸出一個整數,表示小易最少可能多少秒就落入超超的陷阱

示例1

輸入

3
4 6 8
1 2 1

輸出

3

分析:從[1,1]走到[X,Y]需要(X-1)+(Y-1)步這樣對每個陷阱計算一下從[1,1]到陷阱所用的步數,求最小值即可。

n=int(input())
//保存橫縱坐標
x=[int(x) for x in input().split()]
y=[int(x) for x in input().split()]
s=x[0]-y[0]-2//保存值
for i in range(n):s=min(x[i]+y[i]-2,s)
print(s)

5、

題目名稱:身份證分組

來源:去哪網

題目描述

18位身份證的編碼規則是:
前1、2位數字表示:所在省(直轄市、自治區)的代碼
第3、4位數字表示:所在地級市(自治州)的代碼
第5、6位數字表示:所在區(縣、自治縣、縣級市)的代碼;
第7—14位數字表示:出生年、月、日;
第15、16位數字表示:所在地的派出所的代碼;
第17位數字表示性別:奇數表示男性,偶數表示女性;
第18位數字是校檢碼,用來檢驗身份證的正確性。
用戶在輸入身份證的過程中經常會輸入錯誤,為了方便用戶正確輸入需要在輸入過程中對用戶的輸入按照 6+8+4 的格式進行分組,實現一個方法接收輸入過程中的身份證號,返回分組后的字符

輸入描述:

輸入數據有多行,每一行是一個輸入過程中的身份證號

輸出描述:

分組后的字符串

示例1

輸入

5021
502104 198803
5021041988033084
502104198803308324

輸出

5021
502104 198803
502104 19880330 84
502104 19880330 8324

?

分析:就是判斷一下字符串長度的情況

s=input().replace(' ','')
if len(s)<=6:print(s)
elif len(s)<=14:print(s[0:6]+' '+s[6:])
else:print(s[0:6]+' '+s[6:14]+' '+s[14:])

有些同學沒學python,找了個別人的c++,自己看吧

#include <iostream>
#include <string>
using namespace std;//按順序輸出字符串,跳過空格
//重新確定空格的位置,輸出時對非空格字符計數,6及18時輸出一個空格
//注意一種特殊清空,字符串就6個,那么計數為6時不加空格
int main(){string s;while(getline(cin,s)){int cnt=0;for(int i=0;i<s.size();++i){if(s[i]!=' '){++cnt;cout<<s[i];if(i==s.size()-1) break;if(cnt==6||cnt==14) cout<<" ";}}cout<<endl;}
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445594.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445594.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《游戲編程入門 4th》筆記(2 / 14):監聽Windows消息

文章目錄編寫一個Windows程序理解InitInstanceInitInstance函數調用InitInstance的結構理解MyRegisterClassMyRegisterClass函數調用MyRegisterClass的作用揭露WinProc的秘密WinProc函數調用WinProc的大秘密什么是游戲循環The Old WinMain對持續性的需要實時終止器WinMain和循環…

17校招真題題集(2)6-10

注&#xff1a;本系列題目全是按照通過率降序來排列的&#xff0c;基本保證題目難度遞增。 6、 題目名稱&#xff1a;Fibonacci數列 來源&#xff1a;網易 題目描述 Fibonacci數列是這樣定義的&#xff1a; F[0] 0 F[1] 1 for each i ≥ 2: F[i] F[i-1] F[i-2] 因此&am…

QT5的數據庫

#include <QtSql> QT sql QSqlDatabase類實現了數據庫連接的操作 QSqlQuery類執行SQL語句 QSqlRecord類封裝數據庫所有記錄 QSqlDatabase類 [cpp] view plaincopy print?QSqlDatabase db QSqlDatabase::addDatabase("QOCI"); db.setHostName("localh…

數據結構課上筆記6

本節課介紹了單鏈表的操作實現細節&#xff0c;介紹了靜態鏈表。 鏈表帶頭的作用&#xff1a;對鏈表進行操作時&#xff0c;可以對空表、非空表的情況以及 對首元結點進行統一處理&#xff0c;編程更方便。 下面給出帶頭的單鏈表實現思路&#xff1a; 按下標查找&#xff1a; …

《Unity2018入門與實戰》筆記(9 / 9):個人總結

個人總結 腳本語言學習的竅門 盡可能多讀、多寫、多說腳本語言&#xff01; Link 游戲制作步驟 設計游戲時一般會遵循5個步驟&#xff1a; 羅列出畫面上所有的對象。確定游戲對象運行需要哪些控制器腳本。確定自動生成游戲對象需要哪些生成器腳本。準備好用于更新UI的調度…

17校招真題題集(3)11-15

注&#xff1a;本系列題目全是按照通過率降序來排列的&#xff0c;基本保證題目難度遞增。 11、 題目名稱&#xff1a;買蘋果 來源&#xff1a;網易 題目描述 小易去附近的商店買蘋果&#xff0c;奸詐的商販使用了捆綁交易&#xff0c;只提供6個每袋和8個每袋的包裝(包裝不…

Qt學習:QDomDocument

QDomDocument類代表了一個XML文件 QDomDocument類代表整個的XML文件。概念上講&#xff1a;它是文檔樹的根節點&#xff0c;并提供了文檔數據的基本訪問方法。由于元素、文本節點、注釋、指令執行等等不可能脫離一個文檔的上下文&#xff0c;所以文檔類也包含了需要用來創建這些…

《事實:用數據思考,避免情緒化決策》筆記

文章目錄一分為二負面思維直線思維恐懼本能規模錯覺以偏概全命中注定單一視角歸咎他人情急生亂一分為二 要做到實事求是&#xff0c; 就要做到當你聽到一分為二的說法時&#xff0c; 你就能迅速認識到這種說法描述的是一種兩極分化的圖畫&#xff0c; 而兩極之間存在一道巨大的…

順序存儲線性表實現

在計算機中用一組地址連續的存儲單元依次存儲線性表的各個數據元素,稱作線性表的順序存儲結構。 順序存儲結構的主要優點是節省存儲空間&#xff0c;因為分配給數據的存儲單元全用存放結點的數據&#xff08;不考慮c/c語言中數組需指定大小的情況&#xff09;&#xff0c;結點之…

QT5生成.exe文件時,出現缺少QT5core.dll文件解決方法

在 http://qt-project.org/downloads 下載Qt SDK安裝需要Qt版本。在QtCreator下&#xff0c;程序可以正常運行&#xff0c;但是當關閉QtCreator后&#xff0c;在DeBug目錄下再運行相應的*.exe程序時&#xff0c;會提示缺少Qt5Core.dll錯誤。解決方法&#xff1a;添加電腦環境變…

《基于Java實現的遺傳算法》筆記(7 / 7):個人總結

文章目錄為何采用遺傳算法哪些問題適合用遺傳算法解決遺傳算法基本術語一般遺傳算法的過程基本遺傳算法的偽代碼為何采用遺傳算法 遺傳算法是機器學習的子集。在實踐中&#xff0c;遺傳算法通常不是用來解決單一的、特定問題的最好算法。對任何一個問題&#xff0c;幾乎總有更…

單鏈表不帶頭標準c語言實現

鏈表是一種物理存儲單元上非連續、非順序的存儲結構&#xff0c;數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點&#xff08;鏈表中每一個元素稱為結點&#xff09;組成&#xff0c;結點可以在運行時動態生成。每個結點包括兩個部分&#xff1a;一個是…

Java設計模式(4 / 23):單例模式

文章目錄單例模式的應用場景餓漢式單例模式懶漢式單例模式改進&#xff1a;synchronized改進&#xff1a;雙重檢查鎖改進&#xff1a;靜態內部類破壞單例用反射破壞單例用序列化破壞單例解密注冊式單例模式枚舉式單例模式解密容器式單例線程單例實現ThreadLocal單例模式小結參考…

約瑟夫環-(數組、循環鏈表、數學)

約瑟夫環&#xff08;約瑟夫問題&#xff09;是一個數學的應用問題&#xff1a;已知n個人&#xff08;以編號1&#xff0c;2&#xff0c;3...n分別表示&#xff09;圍坐在一張圓桌周圍。從編號為k的人開始報數&#xff0c;數到m的那個人出列&#xff1b;他的下一個人又從1開始報…

Ubuntu麒麟下搭建FTP服務

一.怎么搭建FTP服務&#xff1a; 第一步>>更新庫 linuxidclinuxidc:~$ sudo apt-get update 第二步>>采用如下命令安裝VSFTPD的包 linuxidclinuxidc:~$ sudo apt-get install vsftpd 第三步>>安裝完成后打開 /etc/vsftpd.conf 文件&#xff0c;按如下所述…

《數據結構上機實驗(C語言實現)》筆記(1 / 12):緒論

文章目錄驗證性實驗求1~n的連續整數和說明放碼結果常見算法時間函數的增長趨勢分析說明放碼結果設計性實驗求素數個數說明放碼結果求連續整數階乘的和說明放碼結果驗證性實驗 求1~n的連續整數和 說明 對于給定的正整數n&#xff0c;求12…n12…n12…n&#xff0c;采用逐個累…

線性表實現一元多項式操作

數組存放&#xff1a; 不需要記錄冪&#xff0c;下標就是。 比如1&#xff0c;2&#xff0c;3&#xff0c;5表示12x3x^25x^3 有了思路&#xff0c;我們很容易定義結構 typedef struct node{float * coef;//系數數組int maxSize;//最大容量int order;//最高階數 }Polynomial…

ubuntu下解壓縮zip,tar,tar.gz和tar.bz2文件

在Linux下面如何去壓縮文件或者目錄呢&#xff1f; 在這里我們將學習zip, tar, tar.gz和tar.bz2等壓縮格式的基本用法。 首先了解下Linux里面常用的壓縮格式。 在我們探究這些用法之前&#xff0c;我想先跟大家分享一下使用不同壓縮格式的經驗。當然&#xff0c;我這里講到的只…

《數據結構上機實驗(C語言實現)》筆記(2 / 12):線性表

文章目錄驗證性實驗實現順序表各種基本運算的算法放碼sqlist.hsqlist.cppexp2-1.cpp結果實現單鏈表各種基本運算的算法放碼linklist.hlinklist.cppexp2-2.cpp結果實現雙鏈表各種基本運算的算法放碼dlinklist.hdlinklist.cppexp2-3.cpp結果實現循環單鏈表各種基本運算的算法放碼…

鏈表排序-歸并

鏈表排序&#xff0c;可以插入排序&#xff0c;我就不寫了。 實現歸并排序 歸并排序&#xff08;MERGE-SORT&#xff09;是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一個非常典型的應用。將已有序的子序列合并&…