2011题
主要思路是数列中的每个数的绝对值都能在一个循环中表达,只要补上正负号就能完整表达出目标数列,表达出后按照题意相加即可得到答案。
#include <stdio.h>
#include <math.h>
int main(void) {
int changdu,i,j,b;
float c,sum;
while(scanf("%d\n",&changdu)!=EOF)
{
for(i=0;i<changdu;i++)
{
scanf("%d ",&b);
sum=0;
for(j=1;j<=b;j++)
{
c=1.0/j;
sum+=pow(-1,j-1)*c;
}
printf("%.2f\n",sum);
}
} return 0;
}
2012题
大体思路就是先用一个循环表达出a,b中的数套用公式后的数,然后在判断其中每个数是不是质数。
#include <stdio.h>
int max(int a,int b);
int min(int a,int b);
int main(void) {
int a,b,c,i,j,count=0,f=0,e,ma,mi,d,g;
while(scanf("%d %d",&a,&b)!=EOF)
{
if(a==0&&b==0)
{
return 0;
}else
{
mi=min(a,b);ma=max(a,b);
for(i=mi;i<=ma;i++)
{
c=i*i+i+41;
for(j=2;j<c;j++)
{
g=c/j;
if(c-g*j==0)
{
break;
}
count++;
}
e=c-2;//去掉1和本身,循环只进行了c-2次。
if(count==e){f++;}//如果count=e,则说明这个数是质数
count=0;
}
} d=ma-mi+1;//代表中间有几个数
if(f==d){printf("OK\n");}else{printf("Sorry\n");}
f=0;//如果中间相隔的数和质数的个数一样多,说明成立。
}
return 0;
}
int max(int a,int b)
{if(a>b){return a;}else{return b;}}
int min(int a,int b)
{ if(a<b){return a;}else{return b;}}
2013题
反过来去算f(n-1)=(f(n)+1)*2,一步步递推到第一天。
#include <stdio.h>
int main(void)
{
int a,sum=1,i;
while(scanf("%d\n",&a)!=EOF)
{
for(i=1;i<a;i++)
{
sum=(1+sum)*2;
}
printf("%d\n",sum);
sum=1;
}
return 0;
}
2014题
建立一个数组来保存评委的分数,然后重小到大排列一下,去掉头尾相加之和求平均值。
#include <stdio.h>
#include <math.h>
int main(void) {
int changdu,j,m,i,n,t;float sum=0,su;
while(scanf("%d\n",&changdu)!=EOF)
{
int shuzu[changdu];
for(i=0;i<changdu;i++)
{
scanf("%d",&shuzu[i]);
}
for(j=0;j<changdu;j++)
{
for(m=0;m<changdu-1;m++)
{
if(shuzu[m]<shuzu[m+1]){t=shuzu[m];shuzu[m]=shuzu[m+1];shuzu[m+1]=t;}
}
}
for(n=1;n<changdu-1;n++)
{
sum=shuzu[n]+sum;
}
su=sum/(changdu-2);
printf("%.2f\n",su);
sum=0;
}
return 0;
}
2015题
都是递增的偶数,所以可以用一个循环去表示所有数组的数和这些数的和(tmp,sum),以每m段去分割数组,每经过m段后求一次平均值并打印,清零count和sum,当运算到结尾可能不足m的时候就能直接用sum/count,来输出。
#include <stdio.h>
int main(void)
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
int i,count=0,tmp=0,sum=0;
for (i=1;i<=n;i++)
{
count++;
tmp+=2;
sum+=tmp;
if(i==n){
printf("%d\n",sum/count);
}else if(count==m){
printf("%d " ,sum/m);
count = 0;sum=0;
}
}
}
return 0;
}