一,流浪的小灰
题目描述
小灰,是一只出生在逸夫楼(大概是吧╮(╯▽╰)╭)的老鼠。它从小就受到各个科技类社团的熏陶,精通c/c++等语言的编译器安装,精通Windows、Unix、linux等操作系统的开关机,是一只有文化的老鼠。它一直在逸夫楼四处游荡,寻找一个温暖的家。
有一天,他发现了ACM程序设计协会这个大家庭。在无数次目睹过协会成员们温馨的日常生活后,小灰终于按捺不住心中的冲动,决定加入ACM协会,成为一只ACMer(^o^/)。但是,加入协会是需要通过考试的,摆在小灰面前的是一道数学题,题目如下:
给出两个数字A和B,两个数字之间用”+”“-”“”“/”连接,如果给出的是A+B,则计算(A-B)的值;如果给出的是A-B,则计算(A+B)的值;如给出的是A/B,则计算(AB)的值;如果给出的是A*B,则计算(A/B)的值。(你这是在难为我小灰(╯‵□′)╯︵┻━┻)
这道题对于小灰来说太过于麻烦,所以它找到了聪明的你,请你帮帮它吧!
输入
输入数据仅有一行,包含一个形如A+B的式子。
输出
请你输出计算结果,不要包含多余的空格和换行。
样例输入
1+1
样例输出
0
提示题目保证输入数据为正整数且计算结果在int范围内。
对于除法保证不会出现除零错误,运算结果直接保留整数部分即可。
c++解法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[10000];
scanf("%s",a);
int len,l=0;
len=strlen(a);
int flag1=0,flag2;
for(int i=0;i<len;i++)
{
if(a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/')
{
flag1=i;
break;
}
}
char b[10000];
for(int j=flag1+1;j<len;j++)
{
b[l]=a[j];
l++;
}
long long c,d;
c=atoi(a);
d=atoi(b);
if(a[flag1]=='+')
{
cout<<c-d;
}
if(a[flag1]=='-')
{
cout<<c+d;
}
if(a[flag1]=='/')
{
cout<<c*d;
}
if(a[flag1]=='*')
{
cout<<c/d;
}
return 0;
}
心得:
使用atoi函数。
atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。
二,灰数
题目描述
小灰是一只灰鼠,灰鼠有一个灰数,灰数来自于灰鼠,灰鼠想求出灰数···……
不要问我为什么这次不是小灰求算数题,你们总是让小灰做算数、剪树叶、拼拼图,小灰已经累了,小灰不想做题,小灰只想做一只安静的小灰鼠,但是你们想过小灰的的感受吗,没有!你们只想着让小灰做题·····……^o^/我没疯^o^/放开我……………(拖走ヽ(゜▽゜ )-C<(/;◇/~)
灰数,是小灰家祖传的数字,它满足以下性质
1.是一个奇数
2.对本身在二进制状态下1的个数取余结果为0
3.是一个正整数
例如:数字21,是一个正整数,且是奇数,转为二进制数为10101,其中有3个1,21%3==0,所以它是一个灰数。
现在给出范围n-m(n<=m)请你求出大小在n和m之间的所有灰数。
输入
每个测试点仅包含一组数据,每组数据的输入有一行,包含两个正整数n,m,表示所求值的范围
输出
请输出所有符合 {i为灰数|n<=i<=m} 的数字,每行输出一个,若没有符合条件的数字则输出一个"emmmm...I don't know what to output! "。不得输出多余的空格和换行
样例输入
1 21
样例输出
1
21
提示1<=m<=1000
1<=n<=m
若无合适的值则输出“emmmm...I don't know what to output! ”,注意大小写和标点符号!
c++代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin>>a;
int b[10000],l=0;
while(a)
{
b[l]=a%2;
a/=2;
l++;
}
for(int i=0;i<l;i++)
{
cout<<b[i];
}
}
心得:多进制的转换
三,小灰分苹果
题目描述
发水果了(^o^/)^o^/
小灰最近购进了一批苹果,想要分给所有成员。但是这些苹果的大小不同,本着公平的原则,小灰决定按成员的体重来分配苹果,体重最大的人选择最大的苹果,体重次大的人选择第二大的苹果,以此类推,请你求出第k大的苹果大小是多少。
输入
每个测试点包含多组输入数据,数据的第一行有一个整数t,表示有t组数据,每组数据的第一行有两个整数n,k,分别表示苹果的数量和所求的是第k大的苹果,接下来的一行有n个用空格隔开的数字,分别表示n个苹果的大小。
输出
输出包括t行,每行一个整数表示第k大的苹果的大小
样例输入
1
5 3
1 5 4 2 3
样例输出
3
提示1<=t<=5
1<=n<=100
1<=k<=n
c++解法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x;
cin>>x;
int c[1000],c1=0;
while(x--)
{
int a[1000],f=0;
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n,greater<int>());
c[c1]=a[k-1];
c1++;
for(int i=0;i<n;i++)
{
a[i]=0;
}
}
for(int i=0;i<c1-1;i++)
{
cout<<c[i]<<endl;
}
cout<<c[c1-1];
return 0;
}
心得:
sort函数的从大到小,从小到大排序。