1. 程式人生 > 其它 >吳凡的題庫——快快程式設計801-1000

吳凡的題庫——快快程式設計801-1000

  1. 標題統計
題目描述
凱凱剛寫了一篇美妙的作文,請問這篇作文的標題中有多少個字元? 注意:標題中可能包含大、小寫英文字母、數字字元、空格和換行 符。統計標題 字 符數時,空格和換行符不計算在內
輸入輸出格式
輸入格式
輸入檔案title.in 輸入只有一行,包含若干個字元。這串字串記作s。
輸出格式
輸出檔案title.out 輸出只有一行,包含一個整數,即作文標題的字元數(不含空格和換行符)
輸入輸出樣例
輸入樣例#1:
I Have a Dream
輸出樣例#1:
11
輸入樣例#2:
Xi You Ji
輸出樣例#2:
7
輸入樣例#3:

輸出樣例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("title.in", "r", stdin);
	freopen("title.out", "w", stdout);
	char ch;
	int cnt;
	while(cin>>ch){
		if (ch != ' ')
		    cnt ++;
	}
	cout<<cnt<<endl;
	return 0;
}
  1. 三的倍數
題目描述
輸入一個正整數n,從小到大輸出1到n裡所有3的倍數。
輸入輸出格式
輸入格式
輸入只有一行,包含一個正整數n,3<=n<=10000
輸出格式
輸出只有一行,包含若干個正整數,由空格隔開。
輸入輸出樣例
輸入樣例#1:
4
輸出樣例#1:
3
輸入樣例#2:
10
輸出樣例#2:
3 6 9
輸入樣例#3:

輸出樣例#3:

#include<iostream>
using namespace std;
int main(){
	int i,n;
	cin>>n;
	for(i=3;i<=n;i+=3){
		cout<<i<<" ";
	}
    return 0;
}
  1. 殭屍獵手
題目描述
你是一個殭屍獵殺,攻擊力為x。現在共有n個殭屍在你面前,其中第i頭殭屍的防守力為d[i]。只有當你的攻擊力超過某個殭屍的防守力 時,才能將其 消滅。請問你一共能消滅幾頭殭屍?
輸入輸出格式
輸入格式
輸入第一行為正整數n,n<=10000,第二行為n個非負整數代表d[i]陣列,均不超過100. 第三行為一個正整數x,x<=100
輸出格式
輸出一個整數
輸入輸出樣例
輸入樣例#1:
3
100 59 60
60
解釋說明:攻擊力60沒有超過防禦力100,攻擊力60超過了防禦力59,攻擊力60沒有超過防禦力60。只有一個殭屍被消滅
輸出樣例#1:
1
輸入樣例#2:
6
1 2 3 5 4 3
3
輸出樣例#2:
2
輸入樣例#3:

輸出樣例#3:

#include<iostream>
using namespace std;
int main(){
	int x,n,d[10005],cnt;
	cin>>n;
	for(int i = 0;i<n;i++){
		cin>>d[i];
	}
	cin>>x;
	cnt = 0;
	for(int i = 0;i < n;i ++){
		if(x > d[i]){
			cnt++;
		}
	}
	cout<<cnt;
	return 0; 
} 
  1. 鋪地磚
題目描述
你的新家正在裝修鋪地磚,客廳地面是個正方形,面積為正整數s平方米。現在你希望用1米乘1米的地磚來鋪設,有時不一定能正正好好 湊齊的話多餘 部分會被切割扔掉。請問應該買幾塊地磚?
輸入輸出格式
輸入格式
輸入一個正整數s,1<=s<=10000。
輸出格式
輸出一個正整數。
輸入輸出樣例
輸入樣例#1:
25
輸出樣例#1:
25
輸入樣例#2:
10
輸出樣例#2:
16
輸入樣例#3:
200
輸出樣例#3:
225
#include<iostream>
#include<cmath>
using namespace std;
int main(){
	int n;
	cin>>n;
	cout<<ceil(sqrt(n))*ceil(sqrt(n))<<endl;
	return 0;
}
  1. 計算地址
題目描述
給定一個順序表的長度和起始地址,以及該順序表的資料型別(只包括char,int兩種型別)查詢某個地址是該順序表中的幾號元素(0表示順序表a的0 號元素,對應a[0])?如果地址不在順序表的有效地址範圍內,輸出Error.
輸入輸出格式
輸入格式
輸入檔案address.in
第一行為一個字串,代表資料型別(只可能是char或int兩種情況)
第二行,順序表的長度n和起始地址addr,n<=100000, 0<addr<=2e9
第三行,一個查詢地址q,0<q<=2e9

輸出格式
輸出檔案address.out
輸出查詢地址對應線性表中元素的下標,如果不在有效地址範圍內,輸出Error
輸入輸出樣例
輸入樣例#1:
char
100 2000
2005

輸出樣例#1:
5
說明:char型別順序表,起始地址2000,2005是順序表5號元素即a[5]的地址。
輸入樣例#2:
char
100 2000
1998

輸出樣例#2:
Error
說明:查詢地址不在有效地址範圍內
輸入樣例#3:
int
100 2000
2044

輸出樣例#3:
11
說明:每個int型別變數佔4個位元組。0號變數地址是2000,1號變數地址是2004,…,以此類推11號變數地址是2044。
#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("address.in", "r", stdin);
	freopen("address.out", "w", stdout);
	string type;
	int n;
	int addr;
	int q;
	int nByte;
	cin>>type>>n>>addr>>q;
	if(type=="char")
	    nByte=1;
	else
	    nByte=4;
	int id = (q - addr) / nByte;
	if(id < 0 || id >= n)
	    cout<<"Error";
	else
	    cout<<id;
	return 0;
}
  1. 定時炸彈
題目描述
你在電影劇組裡負責製作定時炸彈的道具。其中最關鍵的一步就是寫一個程式完成倒數計時。輸入一個正整數n,輸出從n開始到0結束的 倒數數字序列 。
輸入輸出格式
輸入格式
輸入只有一個正整數n,n<=10000。
輸出格式
輸出一行包含n+1個數字
輸入輸出樣例
輸入樣例#1:
2
輸出樣例#1:
2 1 0
輸入樣例#2:
10
輸出樣例#2:
10 9 8 7 6 5 4 3 2 1 0
輸入樣例#3:

輸出樣例#3:

#include<iostream>
using namespace std;
int main(){
	int i,n;
	cin>>n;
	for(i=0;i<=n;i++){
		cout<<n-i<<" ";	
	}
	return 0;
}
  1. a的b次方
題目描述
輸入正整數a和b,輸出a的b次方。
輸入資料的範圍: 1<=a<=10, 1<=b<=18
輸入輸出格式
輸入格式
輸入兩個正整數a和b
輸出格式
輸出一個正整數
輸入輸出樣例
輸入樣例#1:
2 10
輸出樣例#1:
1024
解釋說明:10個2連乘,2*2*2*2*2*2*2*2*2*2=1024
輸入樣例#2:
10 18
輸出樣例#2:
1000000000000000000
輸入樣例#3:

輸出樣例#3:

#include<iostream>
using namespace std;
int main(){
	int a,b,i;
	cin>>a>>b;
    unsigned long long result;
    result = 1;
	for(i = 1;i<=b;i++){
		result *=a;	
	}
	cout<<result;
	return 0;
}
  1. 計算二叉樹節點數
題目描述
計算一棵深度為k的二叉樹最多有多少個節點,最少有多少個節點。
輸入輸出格式
輸入格式
一個正整數k,1<=k<=64
輸出格式
兩個正整數,第一個數表示最多節點數,第二個數表示最少節點數,中間空格隔開
輸入輸出樣例
輸入樣例#1:
5
輸出樣例#1:
31 5
輸入樣例#2:

輸出樣例#2:

輸入樣例#3:

輸出樣例#3:

#include<iostream>
using namespace std;
typedef unsigned long long ll;
ll pow(ll n, ll x){
	ll r=n;
	for(int i=1;i<x;i++)	r*=n;
	return r;
}
int main(){
	ll n;
	cin>>n;
	cout<<pow(2, n)-1<<" "<<n;
	return 0;
}
  1. 二叉樹高度
題目描述
一棵完全二叉樹共有n個節點,求該二叉樹的高度。
輸入輸出格式
輸入格式
一個正整數n,1<=n<=2e9
輸出格式
一個正整數,該二叉樹的高度
輸入輸出樣例
輸入樣例#1:
5
輸出樣例#1:
3
輸入樣例#2:
2019
輸出樣例#2:
11
輸入樣例#3:

輸出樣例#3:

#include<iostream>
#include<cmath>
using namespace std;
int main(){
	long long n, cnt=0;
	cin>>n;
	while(n!=0){
		n>>=1;
		cnt++;
	}
	cout<<cnt;
	return 0;
}
  1. 跳級
題目描述
小明共有n個年級要讀,每一次他可以向上升1級,升2級或者升3級,請問共有多少種不同的升級方法。例如n=3時共有四種升級方法:可 以先升1級再升2級,或者先升2級再升1級,或者每次都升1級,或者直接升3級。請問共有多少種升級方法可以正好走完n級。
輸入輸出格式
輸入格式
輸入檔案level.in 輸入一個正整數n(n<=50)
輸出格式
輸出檔案level.out 輸出一個正整數。
輸入輸出樣例
輸入樣例#1:
3
輸出樣例#1:
4
輸入樣例#2:
4
輸出樣例#2:
7
輸入樣例#3:

輸出樣例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("level.in", "r", stdin);
	freopen("level.out", "w", stdout);
	int level;
	long long k[52] = {0, 1, 2, 4};
	cin>>level;
	for(int i=4; i<= level; i++){
		k[i] = k[i-1] + k[i-2] + k[i-3];
	}
	cout<<k[level];
	return 0;
}
  1. 排序
題目描述
有n個整數,請從小到大排序後輸出。
輸入輸出格式
輸入格式
輸入檔案sort.in  輸入第一行為正整數n, n<=500000。第二行共n個整數,均不超過100000,由空格隔開。
輸出格式
輸出檔案sort.out 輸出一行共n個數,由空格隔開。
輸入輸出樣例
輸入樣例#1:
3
2 3 1
輸出樣例#1:
1 2 3
輸入樣例#2:

輸出樣例#2:

輸入樣例#3:

輸出樣例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("sort.in", "r", stdin);
	freopen("sort.out", "w", stdout);
	int n,a[500001];
	cin>>n;
	for(int i=0;i<n;i++)		cin>>a[i];
	sort(a, a+n);
	for(int i=0;i<n;i++)	cout<<a[i]<<" ";
	return 0;
}
  1. 身份證
題目描述
輸入一個人的姓名和該人的身份證號,請識別出該人的出生年份。
小常識:每個人的出生日期會出現在身份證號中的特定位置
輸入輸出格式
輸入格式
輸入檔案identification.in 輸入第一行是一個字串,代表姓名
第二行為一個字串,代表身份證號,長度為18位。
輸出格式
輸出檔案identification.out 輸出只有一行,描述該人的出生年份。
輸入輸出樣例
輸入樣例#1:
Peter Wang
310111199901018976
輸出樣例#1:
Peter Wang was born in 1999.
輸入樣例#2:
Jerry
110101200402291234
輸出樣例#2:
Jerry was born in 2004.
輸入樣例#3:

輸出樣例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("identification.in", "r", stdin);
	freopen("identification.out", "w", stdout);
	string s, id;
	getline(cin, s);
	getline(cin, id);
	id.erase(0, 6);
	id.erase(4);
	cout<<s + " was born in " + id + ".";
	return 0;
}

  1. 單詞替換1
題目描述
輸入一個字串,以回車結束(字串長度<=100)。該字串由若干個單片語成,單詞之間用一個空格隔開,所有單詞區分大小寫。現 需要將其中的 某個單詞替換成另一個單詞,並輸出替換之後的字串。
輸入輸出格式
輸入格式
輸入包括3行,第1行是包含多個單詞的字串 s;第2行是待替換的單詞a(長度 <= 100); 第3行是a將被替換的單詞b(長度 <= 100).  s, a, b 最前面和最後面都沒有空格.
輸出格式
輸出只有 1 行,將s中第一次出現的單詞a替換成b,若沒有找到a就輸出原字串。
輸入輸出樣例
輸入樣例#1:
ha ha ha
ha
wa
輸出樣例#1:
wa ha ha
輸入樣例#2:
A pineapple is not an apple
apple
orange
輸出樣例#2:
A pineapple is not an orange
輸入樣例#3:
abc xyz
ab
xy
輸出樣例#3:
abc xyz
#include<iostream>
using namespace std;
string s, m, d;
int main(){
	getline(cin, s);
	getline(cin, m);
	getline(cin, d);
	string t = ' ' + s + ' ';
	int p = t.find(' ' + m + ' ');
	if(p<0)    cout<<s;
	else{
		s.erase(p, m.size());
		s.insert(p, d);
		cout<<s;
	}
	return 0;
}