Openjudge1.5答案
01
#include <stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int i;
double average=0;
for(i=0;i<n;i++)
{
int goal;
scanf("%d",&goal);
average+=goal;
}
average/=n;
printf("%.2f",average);
}
02
#include <stdio.h>
#include<math.h>
int main()
{
double salary;
double ave=0;
int i;
for(i=0;i<12;i++)
{
scanf("%lf",&salary);
ave+=salary;
}
ave/=12;
printf("$%.2f",ave);
}
03
#include <stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int i;
double x,ave;
for(i=0;i<n;i++)
{
scanf("%lf",&x);
ave+=x;
}
ave/=n;
printf("%.4f",ave);
}
04
#include <stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int i;
int x;
int sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&x);
sum+=x;
}
printf("%d %.5f",sum,sum*1.0/n);
}
05
#include <stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int goal;
int max=0;
int i;
for(i=0;i<n;i++)
{
scanf("%d",&goal);
if(goal>max)
{
max=goal;
}
}
printf("%d",max);
}
06
#include <stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int x,i;
//x为大于0小于1000的整数,因此应将min和max设为1000和0
int min=1000;
int max=0;
for(i=0;i<n;i++)
{
scanf("%d",&x);
if(x<min)
{
min=x;
}
if(x>max)
{
max=x;
}
}
printf("%d",max-min);
}
07
#include <stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][3];
int i;
int gold=0;
int silver=0;
int copper=0;
for(i=0;i<n;i++)
{
scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
}
for(i=0;i<n;i++)
{
gold+=a[i][0];
}
for(i=0;i<n;i++)
{
silver+=a[i][1];
}
for(i=0;i<n;i++)
{
copper+=a[i][2];
}
printf("%d %d %d %d",gold,silver,copper,gold+silver+copper);
}
08
#include <stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int sum=(n-2)*180;
int i,angle;
for(i=0;i<n-1;i++)
{
scanf("%d",&angle);
sum-=angle;
}
printf("%d",sum);
}
09
#include <stdio.h>
#include<math.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int i,count;
int flaga=0;
int flagb=0;
int sum=0;
//判断a,b是否为偶数,是则flag为1
if(a%2==0)
{
flaga=1;
}
if(b%2==0)
{
flagb=1;
}
//a,b为奇,奇
if(flaga==0&&flagb==0)
{
count=(b-a)/2+1;
for(i=a;i<=b;i=i+2)
{
sum+=i;
}
}
//a,b为偶,偶
if(flaga==1&&flagb==1)
{
count=(b-a)/2;
for(i=a+1;i<b;i=i+2)
{
sum+=i;
}
}
//a,b为奇,偶
if(flaga==0&&flagb==1)
{
count=(b-a)/2+1;
for(i=a;i<b;i=i+2)
{
sum+=i;
}
}
//a,b为偶,奇
if(flaga==1&&flagb==0)
{
count=(b-a)/2+1;
for(i=a+1;i<=b;i=i+2)
{
sum+=i;
}
}
printf("%d",sum);
}
10
#include <stdio.h>
#include<math.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int i;
int sum=0;
for(i=a;i<=b;i++)
{
if(i%17==0)
{
sum+=i;
}
}
printf("%d",sum);
}
11
#include <stdio.h>
#include<math.h>
int main()
{
int k,x;
scanf("%d",&k);
int i;
int a=0;
int b=0;
int c=0;
for(i=0;i<k;i++)
{
scanf("%d",&x);
if(x==1)
{
a++;
}
if(x==5)
{
b++;
}
if(x==10)
{
c++;
}
}
printf("%d\n%d\n%d",a,b,c);
}
12
#include <stdio.h>
#include<math.h>
int main()
{
int n,goal,x,i;
int count=0;
scanf("%d %d",&n,&goal);
for(i=0;i<n;i++)
{
scanf("%d",&x);
if(x==goal)
{
count++;
}
}
printf("%d",count);
}
13
#include <stdio.h>
#include<math.h>
int main()
{
long a,n,result;
scanf("%ld %ld",&a,&n);
result=pow(a,n);
printf("%ld",result);
}
14
#include <stdio.h>
#include<math.h>
int main()
{
int x,n;
scanf("%d %d",&x,&n);
double sum=x*1.0;
int i;
for(i=0;i<n;i++)
{
sum*=1.001;
}
printf("%.4f",sum);
}
15
#include <stdio.h>
#include<math.h>
int main()
{
int r,m,y;
scanf("%d %d %d",&r,&m,&y);
double sum=1.0*m;
int i;
for(i=0;i<y;i++)
{
sum*=1+(r*1.0/100);
}
printf("%d",(int)sum);
}
16
#include <stdio.h>
#include<math.h>
int main()
{
int n,k;
scanf("%d %d",&n,&k);
int year,posses;
double price=200*1.0;
for(year=1;year<21;year++)
{
posses=n*year;
if(posses>=price)
{
printf("%d",year);
return 0;
}
price*=(1+(k*1.0)/100);
}
printf("Impossible");
}
17
#include <stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int a[n];
a[0]=1;
a[1]=1;
int i;
for(i=2;i<n;i++)
{
a[i]=a[i-1]+a[i-2];
}
printf("%d",a[i-1]);
}
18
#include <stdio.h>
#include<math.h>
int main()
{
int n,i;
scanf("%d",&n);
//a,b为鸡尾酒疗法的数据,s为改进疗法的数据
int a,b,s[n-1][2];
//x为鸡尾酒疗法的x数据,y为每组改进疗法的y数据
double x,y[n-1];
scanf("%d %d",&a,&b);
x=(b*1.0)/a;
for(i=0;i<n-1;i++)
{
scanf("%d %d",&s[i][0],&s[i][1]);
y[i]=(s[i][1]*1.0)/s[i][0];
}
for(i=0;i<n-1;i++)
{
if(y[i]-x>0.05)
{
printf("better\n");
}
else if(x-y[i]>0.05)
{
printf("worse\n");
}
else
{
printf("same\n");
}
}
}
19
#include <stdio.h>
#include<math.h>
int main()
{
//data用于记录每个屋顶的数据
int i,n;
double data[n][3];
double t=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lf %lf %lf",&data[i][0],&data[i][1],&data[i][2]);
t+=2*(sqrt(pow(data[i][0],2)+pow(data[i][1],2))*1.0/50)+1.5*data[i][2];
}
printf("%d",(int)ceil(t));
}
20
#include <stdio.h>
#include<math.h>
int main()
{
int h,i;
scanf("%d",&h);
//distance为每次跳起经过的路程
double distance=(h*1.0)/2;
//sum为经过的距离和
double sum=h*1.0;
for(i=0;i<9;i++)
{
sum+=2*distance;
distance/=2;
}
printf("%g %g",sum,distance);
}
21
#include <stdio.h>
#include<math.h>
int main()
{
long n;
scanf("%ld",&n);
while(n!=1)
{
if(n%2==0)
{
printf("%ld/2=%ld\n",n,n/2);
n/=2;
}
else if(n%2==1)
{
printf("%ld*3+1=%ld\n",n,3*n+1);
n=3*n+1;
}
}
printf("End");
return 0;
}
22
#include <stdio.h>
#include<math.h>
int main()
{
int budget[12];
int store = 0;
int money = 0;
double sum;
int i;
for (i = 0; i < 12; i++)
{
scanf("%d", &budget[i]);
}
for (i = 0; i < 12; i++)
{
money += 300;
if (money >= budget[i])
{
store += ((money - budget[i]) / 100) * 100;
money -= ((money - budget[i]) / 100) * 100 + budget[i];
}
else
{
printf("-%d", i + 1);
return 0;
}
}
sum = money + store * 1.2;
printf("%.0f", sum);
}
23
#include <stdio.h>
#include<math.h>
int main()
{
int i,n,m,need;
int count = 0;
scanf("%d", &m);
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &need);
if (need <= m)
{
m -= need;
}
else
{
count++;
}
}
printf("%d", count);
}
24
#include <stdio.h>
#include<math.h>
int main()
{
//a为收缩血压,b为舒张血压
int a, b, n, i;
//count用于记录连续正常血压次数,max记录count的最大值
int count = 0, max = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d %d", &a, &b);
//若血压正常
if (a <= 140 && a >= 90 && b <= 90 && b >= 60)
{
count++;
}
else
{
if (count > max)
{
max = count;
}
//若血压不正常,count归零,重新记录
count = 0;
}
}
//最后一次count不归零的情况,count的值未记录
if (count!=0)
{
if (count > max)
{
max = count;
}
}
printf("%d", max);
}
25
#include<stdio.h>
#include<math.h>
//十位数转任意进制的方式:除积倒取余
//可以通过i/7/7%7和i/9/9%9求得7进制和9进制的百位数;
//可以通过i/7%7和i/9%9求得7进制和9进制的十位数;
//可以通过i%7和i%9求得7进制和9进制的个位数。
int main()
{
int i;
for(i=1;;i++)
{
if((i%9==i/7/7%7)&&(i/9%9==i/7%7)&&(i/9/9%9==i%7))
{
printf("%d\n",i);
printf("%d%d%d\n",i/7/7%7,i/7%7,i%7);
printf("%d%d%d\n",i/9/9%9,i/9%9,i%9);
break;
}
}
return 0;
}
26
#include<stdio.h>
int main()
{
int n,i,j,count=0;
//abcd分别表示最高位到最低为上的数
int a,b,c,d;
scanf("%d",&n);
int num[n];
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
//判断是否满足条件
d=num[i]%10;
num[i]/=10;
c=num[i]%10;
num[i]/=10;
b=num[i]%10;
num[i]/=10;
a=num[i]%10;
if(d-b-c-a>0)
{
count++;
}
}
printf("%d",count);
}
27
#include<stdio.h>
int main()
{
int k;
scanf("%d",&k);
double sn=0;
int i=1;
while(sn<=k)
{
sn+=1.0/i;
i++;
}
printf("%d",i-1);
return 0;
}
28
#include<stdio.h>
int main()
{
long x;
scanf("%ld",&x);
int get;
while(x!=0)
{
get=x%10;
printf("%d ",get);
x/=10;
}
return 0;
}
29
#include<stdio.h>
#include<math.h>
int main()
{
long n;
scanf("%ld",&n);
long reverse=0,temp=n;
int i,count=0;
while(temp!=0)
{
count++;
temp/=10;
}
int a[count];
temp=n;
for(i=0;i<count;i++)
{
a[i]=temp%10;
temp/=10;
}
for(i=0;i<count;i++)
{
reverse+=a[i]*pow(10,count-1-i);
}
printf("%d",reverse);
return 0;
}
30
#include<stdio.h>
int main()
{
int m,k,x;
scanf("%d %d",&m,&k);
int temp=m;
int count=0;
while(temp!=0)
{
x=temp%10;
if(x==3)
{
count++;
}
temp/=10;
}
if(count==k&&m%19==0)
{
printf("YES");
}
else
{
printf("NO");
}
}
31
#include<stdio.h>
int main()
{
int n,m,count=0;
int k=0;
scanf("%d %d",&n,&m);
//a[i]用于记录灯的状态,1为打开,-1为关闭
int i,j,a[n];
//将所有的灯初始化为打开状态
for(i=0;i<n;i++)
{
a[i]=1;
}
for(i=1;i<=m;i++)
{
for(j=0;j<n;j++)
{
if((j+1)%i==0)
{
a[j]=-a[j];
}
}
}
//计算有多少个灯关闭
for(i=0;i<n;i++)
{
if(a[i]==-1)
{
count++;
}
}
int b[count];
//b用于记录关闭的灯的序号,初始化b数组
for(i=0;i<n;i++)
{
if(a[i]==-1)
{
b[k++]=i+1;
}
}
//输出关闭的灯的序号
for(i=0;i<count;i++)
{
if(i!=count-1)
{
printf("%d,",b[i]);
}
else
{
printf("%d",b[i]);
}
}
}
32
#include <stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int p=1,q=2,sum=0;
double x,result=0;
for(int i=0;i<n;i++)
{
x=(1.0*q)/p;
result+=x;
int temp=p;
p=q;
q+=temp;
}
printf("%.4f",result);
return 0;
}
33
#include<stdio.h>
#include<math.h>
int main()
{
int i,n;
double sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=pow(-1,i-1)*(1.0/i);
}
printf("%.4f",sum);
return 0;
}
34
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int i,j,sum=0;
for(i=1;i<=n;i++)
{
int x=1;
for(j=1;j<=i;j++)
{
x*=j;
}
sum+=x;
}
printf("%d",sum);
}
35
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int i,j;
double e=1.0;
for(i=1;i<=n;i++)
{
double x=1;
for(j=1;j<=i;j++)
{
x*=j;
}
e+=1/x;
}
printf("%.10f",e);
return 0;
}
36
#include<stdio.h>
#include<math.h>
int main()
{
float x;
int n;
scanf("%f %d",&x,&n);
int i;
double sum=0;
for(i=0;i<n+1;i++)
{
sum+=pow(x,i);
}
printf("%.2f",sum);
return 0;
}
37
#include <stdio.h>
#include<math.h>
int main()
{
int M,N,X;
scanf("%d %d %d",&M,&N,&X);
//power为体力,sword为战斗力,energy为能量
int power=0,sword=N,energy=X;
while(energy>0)
{
energy-=(int)ceil(M*1.0/sword);
if(energy<0)
{
printf("%d",sword);
return 0;
}
int n=sword;
sword+=M/n;
}
printf("%d",sword);
return 0;
}
38
#include <stdio.h>
#include<time.h>
int main()
{
int n;
scanf("%d",&n);
int c[n+1];
if(n==0)
{
printf("0");
}
else
{
for(int i=0;i<n+1;i++)
{
scanf("%d",&c[i]);
if(c[0]==0)
{
printf("0");
return 0;
}
}
for(int i=0;i<n;i++)
{
//输出结果
printf("%d ",c[i]*(n-i));
}
}
return 0;
}
39
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,temp;
long sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
temp=i;
while(temp!=0)
{
if(temp%10==7||temp%7==0)
{
break;
}
else
{
temp/=10;
}
}
if(temp==0)
{
sum+=i*i;
}
}
printf("%d",sum);
return 0;
}
40
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,temp,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
temp=i;
while(temp!=0)
{
if(temp%10==1)
{
sum++;
}
temp/=10;
}
}
printf("%d",sum);
return 0;
}
41
#include<stdio.h>
#include<math.h>
int main()
{
int i,l,r,sum=0;
scanf("%d %d",&l,&r);
//遍历l到r
for(i=l;i<=r;i++)
{
int temp=i;
while(temp>0)
{
if(temp%10==2)
{
sum++;
}
temp/=10;
}
}
printf("%d\n",sum);
return 0;
}
42
#include<stdio.h>
#include<math.h>
int main()
{
int height,width,flag;
char x;
scanf("%d %d %c %d",&height,&width,&x,&flag);
int i,j;
if(flag==1)
{
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
printf("%c",x);
}
printf("\n");
}
}
else if(flag==0)
{
for(i=0;i<height;i++)
{
if(i==0||i==height-1)
{
for(j=0;j<width;j++)
{
printf("%c",x);
}
}
else
{
for(j=0;j<width;j++)
{
if(j==0||j==width-1)
{
printf("%c",x);
}
else
{
printf(" ");
}
}
}
printf("\n");
}
}
return 0;
}
43
#include<stdio.h>
#include<math.h>
//n的因数可用n%i==0表示,最大的质因数可用n/min(最小的质因数) 表示
//因此只需找出最小的质因数即可
//最小的质因数 = 是质数 + 是n的因数
int main()
{
int flag,i,j;
long long n;
scanf("%lld",&n);
//遍历2到n寻找最小质因数
for(i=2;i<n;i++)
{
flag=0;
//判断是否为质数
for(j=2;j<sqrt(i);j++)
{
if(i%j==0)
{
flag=1;
break;
}
}
//flag=0表示该数为质数,n%i==0表示该数是n的因数
if(flag==0&&n%i==0)
{
printf("%d",n/i);
return 0;
}
}
return 0;
}
44
#include<stdio.h>
#include<math.h>
int isprime(int x)
{
//该函数的作用是判断一个数是否为素数
int i,j;
//注意:此处的素数可能取值很大,因此必须用sqrt()的方法,效率高,否则编译超时
for(i=2;i<=sqrt(x);i++)
{
if(x%i==0)
{
return 0;
}
}
if(i==sqrt(x))
{
return 1;
}
}
int main()
{
int n;
int count=0;
scanf("%d",&n);
int i=2;
while(count!=n)
{
if(isprime(i))
{
count++;
}
i++;
}
printf("%d",i-1);
return 0;
}
45
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i,j,sum=0,count=0;
for(i=1;i<=n;i++)
{
for(j=0;j<i;j++)
{
sum+=i;
count++;
if(count==n)
{
printf("%d",sum);
return 0;
}
}
}
return 0;
}