吴凡的题库——快快编程101-150
最编程
2024-01-18 17:16:12
...
- 大小写转换
题目描述
请用户键入一个字符串,将其中的大写字母变成小写,小写字母变成大写,输出改变后的字符串。
输入输出格式
输入格式
输入文件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;
}
- 卡特兰数
题目描述
卡特兰数,英文名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;
}
- 最小公倍数
题目描述
请写一个程序,输入是两个正整数,输出是他们的 最小公倍数。 说明:最小公倍数英文叫做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;
}
- 大写
题目描述
请写一个程序,输入是一个字符串,请将其中的小 写字母都改成大写字母,并输出。
输入输出格式
输入格式
输入文件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;
}
- 凯撒加密字符串
题目描述
历史上罗马的凯撒大帝使用过一种加密技术,把英 文的每个字母按照规律变成另一个字母。例如以下 规则: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 行,一个整数 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;
}
- 得奖分数线 (前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;
}
- 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;
}
- 杀伤范围
题目描述
一次元僵尸大战爆发了,英雄站在一次元世界的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;
}
- 合影效果
题目描述
同学们去野外郊游,为美丽的景色所陶醉,想合影 留念。如果他们站成一排,男生全部在左(从拍照 者的角度),并按照从矮到高的顺序从左到右排, 女生全部在右,并按照从高到矮的顺序从左到右排 ,请问他们合影的效果是什么样的?输入第一行是 人数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;
}
- 螺旋矩阵
题目描述
一个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