欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

吴凡的题库——快快编程101-150

最编程 2024-01-18 17:16:12
...
  1. 大小写转换
题目描述
请用户键入一个字符串,将其中的大写字母变成小写,小写字母变成大写,输出改变后的字符串。
输入输出格式
输入格式
输入文件letters.in 输入一行字符串。
输出格式
输出文件letters.out 输出一行字符串。
输入输出样例
输入样例#1:
Tom studied in MIT.

输出样例#1:
tOM STUDIED IN mit.
输入样例#2:

输出样例#2:

输入样例#3:

输出样例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("letters.in", "r", stdin);
	freopen("letters.out", "w", stdout);
	string s, ans;
	getline(cin, s);
	for(int i=0;i<s.size();i++){
		if((s[i]<='z')&&(s[i]>='a'))	ans += char(s[i] - 32);
		else if((s[i]<='Z')&&(s[i]>='A'))	ans += char(s[i] + 32);
		else ans += s[i];
	}
	cout<<ans;
	return 0;
} 
  1. 卡特兰数
题目描述
卡特兰数,英文名Catalan number,是组合数学中 一个常出现在各种计数问题中出现的数列。以比利 时数学家卡塔兰 (1814–1894)的名字来命名,其前 几项为 : 1, 1, 2, 5, 14, 42, 132, … 卡特兰数 第零项h(0)=1,第一项h(1)=1,之后每项存在规律 。当k>=2时,Catalan数满足几种常见的推导方式: 方法1: h(k)= h(0)*h(k-1)+h(1)*h(k-2) + ... + h(k-1)*h(0) 方法2: h(k)=h(k-1)*2*(2*k-1)/(k+1) 请写一个程序,输入是一个正整数,输出是第n项的卡特兰数。
输入输出格式
输入格式
输入是一个正整数
输出格式
输出是第n项的卡特兰数。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll h(int k){
	if(k<2)return 1;
	else return h(k-1)*2*(2*k-1)/(k+1);
}
int main(){
	int x;
	cin>>x;
	cout<<h(x)<<endl;
	return 0;
}
  1. 最小公倍数
题目描述
请写一个程序,输入是两个正整数,输出是他们的 最小公倍数。 说明:最小公倍数英文叫做Least Common Multiple,简写LCM。
输入输出格式
输入格式
两个正整数,均不超过1000000000
输出格式
一个正整数
输入输出样例
输入样例#1:
4 6
输出样例#1:
12
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
int main(){
	long long a, b, r, result, ta, tb;
	cin>>a>>b;
	ta = a;
	tb = b;
	while(r=a%b){
		a = b;
		b = r;
	}
	result = b * (ta / b) * (tb / b);
	cout<<result<<endl;
	return 0;
}
  1. 大写
题目描述
请写一个程序,输入是一个字符串,请将其中的小 写字母都改成大写字母,并输出。
输入输出格式
输入格式
输入文件capitalization.in  输入一行包含一个字符串,没有空格,长度不超过10000.
输出格式
输出文件capitalization.out 输出一个字符串
输入输出样例
输入样例#1:
Algorithm
输出样例#1:
ALGORITHM
输入样例#2:

输出样例#2:

输入样例#3:

输出样例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("capitalization.in", "r", stdin);
	freopen("capitalization.out", "w", stdout);
	string s;
	getline(cin, s);
	for(int i = 0; i < s.size(); i++){
		if(s[i] >= 'a' && s[i] <= 'z')
		    s[i] -= 32;
	}
	cout<<s<<endl;
	return 0;
}
  1. 凯撒加密字符串
题目描述
历史上罗马的凯撒大帝使用过一种加密技术,把英 文的每个字母按照规律变成另一个字母。例如以下 规则:a加密后变成b,b加密后变成c,c加密后变成d,…,y加密后变成z,z加密后变成a 请写一个程序,输入是一行字符串,只包含小写字母和空格,输 出是这些字母加密后的结果。 说明:字符串中的空格应不做改动
输入输出格式
输入格式
输入文件caesar.in 输入一行字符串,包含小写字 母或空格。
输出格式
输出文件caesar.out 输出是其中字母加密后的结果。 说明:字符串中的空格应不做改动
输入输出样例
输入样例#1:
zhe ti zhen jian dan
输出样例#1:
aif uj aifo kjbo ebo
输入样例#2:
viva la vida
输出样例#2:
wjwb mb wjeb
输入样例#3:

输出样例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("caesar.in", "r", stdin);
	freopen("caesar.out", "w", stdout);
	string s;
	getline(cin, s);
	for(int i = 0; i < s.size(); i++){
		if(s[i] != ' '){
			if(s[i] == 'z' || s[i] == 'Z'){
				if(s[i] == 'z')
				    s[i] = 'a';
				else
				    s[i] = 'A';
			}
			else
			    s[i]++;
		}
	}
	cout<<s<<endl;
	return 0;
}
  1. 数字反转
题目描述
给定一个整数,请将该数各个位上数字反转得到一 个新数。新数也应满足整数的常见形式,即除非给 定的原数为零,否则反转后得到的新数的最高位数 字不应为零(参见样例)。
输入输出格式
输入格式
输入共1 行,一个整数 N
输出格式
共1 行,一个整数 N
输入输出样例
输入样例#1:
-380
输出样例#1:
-83
输入样例#2:

输出样例#2:

输入样例#3:

输出样例#3:

#include<iostream>
using namespace std;
typedef long long ll;
int main(){
	ll n,ans=0;
	cin>>n;
	if(n<0){
		cout<<"-";
		n=-n;
	}
	do{
		ans=ans*10+n%10;
		n/=10;
	}while(n);
	cout<<ans;
	return 0;
}
  1. 得奖分数线 (前m名都能获奖)
题目描述
小盆友们参加编程比赛,共n人参赛,前m名一定可 以得奖。请写一个程序,输入第一行是两个正整数n和m,输入第二行是n个参赛者的得分,由空格隔开 。输出是至少得几分可以拿奖。如有并列分数时, 并列前m名都能获奖。
输入输出格式
输入格式
 输入第一行是两个正整数n和m,输入第二行是n个 参赛者的得分(m<=n<=10000)
输出格式
输出一个数。
输入输出样例
输入样例#1:
4 2
90 90 70 100
输出样例#1:
90
输入样例#2:

输出样例#2:

输入样例#3:

输出样例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,k,a[500001];
	cin>>n>>k;
	for(int i=0;i<n;i++)	cin>>a[i];
	sort(a, a+n);
	reverse(a, a+n);
	cout<<a[k-1];
	return 0;
}
  1. ISBN号码
题目描述
每一本正式出版的图书都有一个ISBN号码与之对应 ,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔 符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位 数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代 表维京出版社;第二个分隔之后的五位数字代表该 书在出版社的编号;最后一位为识别码。识别码的 计算方法如下: 首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即 为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得 到的:对067082162这9个数字,从左至右,分别乘 以1,2,…,9,再求和,即0×1+6×2+„„+2×9=158, 然后取158 mod 11的结果4作为识别码。 你的任务 是编写程序判断输入的ISBN号码中识别码是否正确 ,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。
输入输出格式
输入格式
输入文件isbn.in 输入只有一行,是一个字符序列 ,表示一本书的ISBN号码(保证输入符合ISBN号码 的格式要求)。
输出格式
输出文件isbn.out 输出共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
输入输出样例
输入样例#1:
0-670-82162-0
输出样例#1:
0-670-82162-4
输入样例#2:

输出样例#2:

输入样例#3:

输出样例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("isbn.in", "r", stdin);
	freopen("isbn.out", "w", stdout);
	string s;
	cin>>s;
	int c=1,sum=0;
	for(int i=0;i<s.size()-2;i++)
	    if(i!=1&&i!=5){
	    	sum+=c*(s[i]-'0');
	    	c++;
		}
	int id=sum%11;
	char code='X';
	if(id<10)
	    code='0'+id;
	if(s[12]==code)
	    cout<<"Right";
	else
	    cout<<s.substr(0,12)<<code<<endl;
	return 0;
} 
  1. 杀伤范围
题目描述
一次元僵尸大战爆发了,英雄站在一次元世界的0点,n只僵尸从英雄的前后向他袭来。英雄的魔法杀伤范围为r,当僵尸离英雄的距离小于等于r时该僵尸 会被消灭。为了消灭至少k只僵尸,请问英雄魔法需要多大?
输入输出格式
输入格式
输入文件range.in 输入第一行为n和k,1<=k<=n<=10000。第二行为n个整数,代表这n只僵尸的位置, 均在-100000到100000之间。
输出格式
输出文件range.out 输出为一个正整数,代表杀伤 范围r。
输入输出样例
输入样例#1:
8 3
1 2 3 4 -1 -2 2 2
输出样例#1:
2
输入样例#2:

输出样例#2:

输入样例#3:

输出样例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("range.in", "r", stdin);
	freopen("range.out", "w", stdout);
	int n,k,a[100001],c=0,g=0;
	cin>>n>>k;
	for(int i = 0; i < n; i ++)		cin>>a[i];
	sort(a, a+n);
	while(g<k){
		g=0;
		c++;
		for(int i=0;i<n;i++)
		    if(abs(a[i])<=c)
		        g++;
	}
	cout<<c;
	return 0;
}
  1. 合影效果
题目描述
同学们去野外郊游,为美丽的景色所陶醉,想合影 留念。如果他们站成一排,男生全部在左(从拍照 者的角度),并按照从矮到高的顺序从左到右排, 女生全部在右,并按照从高到矮的顺序从左到右排 ,请问他们合影的效果是什么样的?输入第一行是 人数n,之后有n行每行是一位朋友的描述,包括性 别和身高。输出是一行表示合影的身高排列,由空 格隔开。
输入输出格式
输入格式
输入文件photo.in 输入第一行是人数n,n<=100。 之后有n行每行是一位朋友的描述,包括性别和身高。
输出格式
输出文件photo.out 输出是一行表示合影的身高排 列,由空格隔开。说明:输入输出的身高都保留两 位小数
输入输出样例
输入样例#1:
6
male 1.72
male 1.78
female 1.61
male 1.65
female 1.70
female 1.56
输出样例#1:
1.65 1.72 1.78 1.70 1.61 1.56
输入样例#2:

输出样例#2:

输入样例#3:

输出样例#3:

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 400005;
string s;
double h[MAXN];
int type[MAXN],rank[MAXN],n;
bool cmp(int a,int b){
	if(type[a] != type[b])	return type[a] < type[b];
	if(!type[a]) return h[a] < h[b];
	return h[a] > h[b];
}
int main(){
	freopen("photo.in", "r", stdin);
	freopen("photo.out", "w", stdout);
	cin>>n;
	for(int i = 0;i < n;i ++){
		cin>>s>>h[i];
		if(s[0] == 'f')	type[i] = 1; else type[i] = 0;
		rank[i] = i;
	}
	sort(rank,rank+n,cmp);
	for(int i = 0;i < n;i ++)
	    printf("%.2f%c",h[rank[i]],(i+1)==n?'\n':' ');
	return 0;
}
  1. 螺旋矩阵
题目描述
一个n*n矩阵从左上角开始顺时针填数(如图n为4),求第i行j列所填的数字
  1  2  3  4
12 13 14  5
11 16 15  6
10  9  8  7
输入输出格式
输入格式
输入文件matrix.in 包含n,i,j(i,j<=n<=100000)
输出格式
输出文件matrix.out 包含第i行j列所填的数字
输入输出样例
输入样例#1:
4 2 3
输出样例#1:
14
输入样例#2:
3 2 2
输出样例#2:
9
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("matrix.in","r",stdin);
	freopen("matrix.out","w",stdout);
    ios::sync_with_stdio(false);
    long long n,i,j,mi,ans=0;
    cin>>n>>i>>j;
    mi=min(i,min(j,min(n-i+1,n-j+1)));
    if(i<=j)ans=mi*(4*(n-1)-4*mi)+10*mi-4*n-3+i+j;
    else ans=mi*(4*n-4*mi)+2*mi+1-i-j;
    cout<<ans<<endl;
    return 0;
}

原文地址:https://www.cnblogs.com/WindowsRegedit/p/16133836.html