OJ2012题、2013题、2014题、2015题、2016题

来源:互联网 发布:linux 延迟函数 select 编辑:程序博客网 时间:2024/05/15 06:38
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。

Input
输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。

Output
对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。

Sample Input
0 10 0

Sample Output
OK
#include<stdio.h>int sushu(int n){    int i;    if(n<2)    return 0;    for(i=2;i*i<=n;i++)    {        if(n%i==0)        return 0;    }    return 1;}int main(){    int x, y, i, s;    while(scanf("%d%d",&x,&y))    {        if(x==0&&y==0)        break;        for(i=x;i<=y;i++)        {            s=i*i+i+41;            if(!sushu(s))            {                printf("Sorry\n");                break;            }        }        if(i==y+1)        printf("OK\n");    }    return 0;}
喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!
什么问题?他研究的问题是蟠桃一共有多少个!
不过,到最后,他还是没能解决这个难题,呵呵^-^
当时的情况是这样的:
第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?

Input
输入数据有多组,每组占一行,包含一个正整数n(1<n<30),表示只剩下一个桃子的时候是在第n天发生的。

Output
对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。

Sample Input
24

Sample Output
422
#include <stdio.h>int main(){int n;while(scanf("%d",&n)!=EOF){int s=1;for(n;n>1;n--){s=(s+1)*2;}printf("%d\n",s);}return 0;}
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。

Input
输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。

Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。

Sample Input
3 99 98 974 100 99 98 97

Sample Output
98.0098.50
#include <stdio.h>int main() {int n,s[100];while(scanf("%d",&n)!=EOF){int i;float f=0;float sum=0;int max=0;int min=100;for(i=0;i<n;i++){scanf("%d",&s[i]);if(max<s[i]){max=s[i];}if(min>s[i]){min=s[i];}sum=sum+s[i];}f=sum-min-max;printf("%.2f\n",f/(n-2));}return 0;}
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。

Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。

Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。

Sample Input
3 24 2

Sample Output
3 63 7
#include<stdio.h>int main (){int a[100],i,j,m,n,x,y;for(i=0;i<100;i++) a[i]=(2*i+2);while(scanf("%d%d",&y,&m)!=EOF) {n=y/m;x=0;for(i=0;i<m;i++) x+=a[i];x=x/m;printf("%d",x);if(y>m){for(j=2;j<=n;j++){x=0;for(i=(j-1)*m;i<j*m;i++)x+=a[i];x=x/m;printf(" %d",x);}if(y>n*m){x=0;for(i=n*m;i<y;i++)x+=a[i];printf(" %d",x/(y-n*m));}} printf("\n");} return 0;}
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。

Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。

Output
对于每组输入数据,输出交换后的数列,每组输出占一行。

Sample Input
4 2 1 3 45 5 4 3 2 10

Sample Output
1 2 3 41 4 3 2 5
#include <stdio.h>int main(){int n;while(scanf("%d",&n)!=EOF&&n!=0){int i,j,x[100],min=0,in=0,temp;for(i=0;i<n;i++)scanf("%d",&x[i]);min=x[0]; for(j=1;j<n;j++){if(min>x[j]){min=x[j];in=j;}}temp=x[0];x[0]=x[in];x[in]=temp;for(j=0;j<n;j++){printf("%d",x[j]);if(j!=n-1)printf(" ");} printf("\n");}return 0;}










0 0
原创粉丝点击