姓名:谢明轩
用时:2小时
第一题
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x,y,m,n,L,a,i;
while(1)
{
scanf("%d",&x);//A start
if(x<200000000) break;
}
while(1)
{
scanf("%d",&y);//B start
if(y<200000000&&y!=x) break;
}
while(1)
{
scanf("%d",&m);//A onejump
if(m<200000000&&m>0)break;
}
while(1)
{
scanf("%d",&n);//B onejump
if(n<200000000&&n>0)break;
}
while(1)
{
scanf("%d",&L);//onecircle
if(L<210000000&&L>0)break;
}
a=y-x;
for(i=0;; i++)
{
if((a+i*(n-m))%L==0) break;
if(i==2100000000) break;
}
if(i==2100000000)printf("impossible");
else printf("%d",i);
return 0;
}
第二题
#include <stdio.h>
#include<stdlib.h>
int main()
{
int a[100],r,s,m,i,sum,A,C,result;
int n;
int *p,*q;
scanf("%d",&n);
for(r=0;n!=0;r++)
{
sum=0;
A=1;
C=1;
p=(int *)malloc(sizeof(int)*n);
q=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",p);
sum=sum+*p;
*q=1;
for(m=*p;m!=0;m--)
{
*q=(*q)*m;
}
if(i==n-1) break;
p++;
q++;
}
for(;sum!=0;sum--)
{
A=A*sum;
}
for(i=0;i<n;i++)
{
C=C*(*p);
p--;
}
result=A/C;
a[r]=result;
scanf("%d",&n);
}
r--;
for(s=0;s<=r;s++)
{
printf("%d\n",a[s]);
}
return 0;
}
第三题
#include<stdio.h>
#include<stdlib.h>
int main()
{
int t,*T,N,a,b,m,n,p,q,min,i;
scanf("%d",&t);
T=(int *)malloc(sizeof(int)*t);
for(i=0;i<t;i++)
{
scanf("%d",&N);
a=N/150;
b=N/200;
min=150;
q=0;
for(m=0;m<=a;m++)
{
for(n=0;n<=b;n++)
{
p=N-m*150;
if(p>=0&&p<min)min=p;
if(p>=200) q=p-b*200;
if(q>=0&&q<min) min=q;
}
}
T[i]=min;
}
for(i=0;i<t;i++)
{
printf("%d\n",T[i]);
}
return 0;
}