OJ算法题共10个篇幅,不定期在篇幅里增加题目(篇幅不增加)。
个人水平有限,如有错误和可以改进的地方,非常期待批评指正,谢谢!
题目描述
Tarpe 酋长有个好朋友,为了纪念伟大的王,他打算和 Tarpe 酋长做个交易,他现在有 a
资本,希望在交易前知道预期的总收益 b(包括 a 资本),已知交易的回报率为 c%
。
输入
一行,每行两个数 a,c
,以一个空格隔开 (保证 a,c
为正数,可以为小数)
输出
输出一行,b
的值,保留 2
位小数
输入样例
100 2
输出样例
102.00
Hint
总收益 = 资本∗(1 + 回报率), 注意数据可以为小数, 输出两位小数的方法:printf(“%.2f”,b);
#include<stdio.h>
int main()
{
float a,c;
scanf("%f%f",&a,&c);
c=c/100;
printf("%.2f",a*(1+c));
return 0;
}
题目描述
Terry的室友睡觉的时候会说梦话,但是他不承认,除非Terry能把他的梦话写出来。于是,某天夜里
室友:
?*&\!_//\a@\\\r\n!
/\//\\"_"/\\^!~zZ
Terry也不知道自己为什么要在题目中这样黑自己的室友,但是这不重要。重要的是,你们需要把这段话写出来。
输入
无
输出
请输出室友的梦话
输出样例
?*&\!_//\a@\\\r\n!//\\"_"/\\^!~zZ
HINT
转义符是个什么东东呢,建议查阅资料好好讨论一下哦
#include<stdio.h>
int main()
{
printf("?*&\\!_//\\a@\\\\\\r\\n!//\\\\\"_\"/\\\\^!~zZ");
return 0;
}
题目描述
有这样一个序列 "abcdefgabcdefgabcdefg......",要求找出从头开始第 i
个字母是哪个,字母从 1
开始编号。
输入
一个正整数,保证在 int 的范围内,表示 i
。
输出
输出找到的字母
输入样例
9
输出样例
b
HINT
序列是有规律的
#include<stdio.h>
int main()
{
int n,b;
int L,i;
scanf("%d",&n);
b=n%7;
switch(b){
case 0: printf("g");break;
case 1: printf("a");break;
case 2: printf("b");break;
case 3: printf("c");break;
case 4: printf("d");break;
case 5: printf("e");break;
case 6: printf("f");break;
}
return 0;
}
题目描述
在干掉了guangtou之后,无聊的零崎又去找事了……
说起来零崎前几周学到了一个叫做Apriori算法的东西,其第一步是挑出所有出现频率大于某个给定值的数据。然而作为一个具有一定程度的强(qiǎng )迫(pò)症的人,零崎显然希望先排个序再对其子集进行操作。
于是,现在的任务是简单的升序排列。
输入
多组输入数据,每组两行,第一行为一个整数n。第二行为n个整数。
输出
每组一行,输出n个整数的升序排列,两个整数之间用一个空格隔开。
输入样例
5
6 5 2 3 1
输出样例
1 2 3 5 6
#include<stdio.h>
/*void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}*/
void quicksort(int *a, int left, int right){
if(left >= right){
return ;
}
int i = left;
int j = right;
int key = a[left];
while(i < j){
while(i < j && key <= a[j]){
j--;
}
a[i] = a[j];
while(i < j && key >= a[i]){
i++;
}
a[j] = a[i];
}
a[i] = key;
quicksort(a, left, i - 1);
quicksort(a, i + 1, right);
}
int main(){
int n,a[10000];
while(scanf("%d",&n)){
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
quicksort(a,0,n-1);
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
}
//通过不了,答案正确
#include<stdio.h>
int A[];
int B[];
int main(){
int n,number=0,temp;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
scanf("%d",&A[i]);
for(int j=0;j<i;j++){
if(A[i]<A[j]){
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
}
for(int i=0;i<n;i++){
printf("%d ",A[i]);
}
}
return 0;
}
题目描述
计算A+B
输入
第一个数为数据组数n
接下来n行,每行2个整数a,b(保证a,b, a+b在int范围内)
输出
对于每组数据,输出一行,a+b的值
输入样例
1
1 2
输出样例
3
#include<stdio.h>
int main()
{
int n,a,b;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
}
}
return 0;
}
均成绩吧(输出保留两位小数)
输入
共一行,每行3个数字分别为3位同学的成绩(成绩在1到100之间)
输出
3位同学的平均成绩。
输入样例
1 4 5
输出样例
3.33
提示
jhljx大西瓜不会说cool_breeze是要你们把输出结果保留两位小数。 即便是整数比如5也得变成5.00
c++中保留小数需要使用iomanip头文件。像这样
include<iomanip>
输出一个数的时候这样,
double a;
cin>>a;
cout<<fixed<<setprecision(2)<<a<<endl;
这样即对a这个double数字保留了小数点后两位小数。
#include<stdio.h>
int main(){
float a,b,c;
while(scanf("%f%f%f",&a,&b,&c)!=EOF){
printf("%.2f\n",(a+b+c)/3);
}
return 0;
}
题目描述
极具北航特色的TD线(too dangerous line)现在开通啦!不知道大家有没有去刷呢?新版的TD每天可以刷3次哦O(∩∩)O
作为勤奋的Coolbreeze猪脚,可是一次都不肯落下呢。假设每学期要刷n次 TD,那么cool_breeze猪脚只需要多少天就可以完成任务呢?
输入
共一组数据,每组一个数字n(1<=n<=1000)
输出
Cool_breeze猪脚需要多少天才可以完成TD任务
输入样例1
4
输出样例1
2
输入样例2
3
输出样例2
1
#include<stdio.h>
int main()
{
int n,a;
while(scanf("%d",&n)!=EOF){
a=n%3;
if(a>0)
a=1;
printf("%d\n",n/3+a);
}
return 0;
}
题目描述
大家好,熟悉的a+b又和大家见面了呢O(∩_∩)O。
大家赶紧动动手,A了我吧 ^_^
输入
共一组,每组两个数字a,b(a,b均在int范围内)
输出
输出一行,a+b的值
输入样例
1 2
输出样例
3
#include<stdio.h>
int main()
{
int a,b;
while(~scanf("%d %d",&a,&b)){
printf("%d\n",a+b);
}
return 0;
}