2013年5月21日 星期二

第21次ITSA答案參考

題目連結:http://db.tt/dbfYqNFW (右鍵開新視窗)
1
#include<stdio.h>
int main(){
int n,sum=0,i,v=0,tmp;
scanf("%d",&n);
for(i=0;i<n;i++){
    scanf("%d",&tmp);
    if(tmp>=v) v=tmp;
    else {
        sum+=v-tmp;
    }
}
printf("%d\n",sum);
return 0;
}

2
#include<stdio.h>
int main(){
int m,n,k;
scanf("%d",&m);
while(m--){
    scanf("%d %d",&n,&k);
    int mark[n],i;
    for(i=0;i<n;i++) mark[i]=1;
    int sum=n-1,p=0,tmp=k;
    while(sum){
        if(mark[p]==1){

            p++;
            if(p>=n) p-=n;

            tmp--;
        }
        else{

            p++;
            if(p>=n) p-=n;

        }
        if(tmp==0){
            if(p-1>=0)
            mark[p-1]=0;
            else mark[p-1+n]=0;
            sum--;
            tmp=k;
        }

    }
    int ans;
    for(i=0;i<n;i++) if(mark[i]!=0) ans=i;
    char name[50];
    for(i=0;i<n;i++){
        scanf("%s",name);
        if(i==ans) printf("%s\n",name);
    }

}
return 0;
}

3
#include<stdio.h>
int main(){
int x1=0,b1,b2;
char input[100];
scanf("%s",input);
scanf("%d",&b1);
scanf("%d",&b2);
int i,flag=0,no;
for(i=0;input[i];i++){
    if(input[i]>='0'&&input[i]<='9') no=input[i]-'0';
    else if(input[i]>='A'&&input[i]<='F') no=input[i]-'A'+10;
    if(no>=b1) flag=1;
    x1*=b1;
    x1+=no;
}

char ans[100];
int n=0;
while(x1){
if(x1%b2>=10) ans[n]=x1%b2-10+'A';
else ans[n]=x1%b2+'0';
n++;
x1/=b2;
}

for(i=n-1;i>=0;i--) printf("%c",ans[i]);
puts("");

return 0;
}

4
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int top=1;
while(n-->1) top*=10;
int i;
for(i=1;i<top;i++){
    int t=i,sum=0,p=1;
    while(t){
    int tmp=t%10;
    t/=10;
    sum+=tmp;
    p*=tmp;
    }
    if(sum==p) printf("%d\n",i);
}
puts("");
return 0;
}

5
#include<stdio.h>
#include<math.h>
double dist (double x,double y,double a,double b){
return sqrt((x-a)*(x-a)+(y-b)*(y-b));
}

int main(){
int n;
int  x[100],y[100];
scanf("%d",&n);
int i,j;
double min=1e9;
for(i=0;i<n;i++) scanf("%d %d",&x[i],&y[i]);



for(i=0;i<n;i++)
    for(j=i+1;j<n;j++){
        //printf("(%d,%d)-(%d,%d) %f\n",x[i],y[i],x[j],y[j],dist(x[i],y[i],x[j],y[j]));
        if(dist(x[i],y[i],x[j],y[j])<=min&&i!=j) min=dist(x[i],y[i],x[j],y[j]);
    }

printf("%.4f\n",min);


return 0;
}

沒有留言:

張貼留言