※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

「AOJ81~90」の編集履歴(バックアップ)一覧に戻る
AOJ81~90」を以下のとおり復元します。
*0081 A Symmetric Point
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0081
教科書通りに線対称行列を書くだけ。


#include<stdio.h>
#include<math.h>

int main(){
	double xs[3],ys[3],vx,vy,x,y,len,sin1,cos1,sin2,cos2;
	while(scanf("%lf,%lf,%lf,%lf,%lf,%lf",&xs[0],&ys[0],&xs[1],&ys[1],&xs[2],&ys[2])!=EOF){
		vx=xs[1]-xs[0];
		vy=ys[1]-ys[0];
		len=sqrt(vx*vx+vy*vy);
		sin1=vy/len;
		cos1=vx/len;
		sin2=2*sin1*cos1;
		cos2=cos1*cos1-sin1*sin1;
		vx=xs[2]-xs[0];
		vy=ys[2]-ys[0];
		x=vx*cos2+vy*sin2+xs[0];
		y=vx*sin2-vy*cos2+ys[0];
		printf("%lf %lf\n",x,y);
	}
}



----
*0082 Flying Jenny
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0082
ただただ原始的に回して乗れない人数の最小ポイントを求めるだけ。

#include<stdio.h>
#include<set>

void calc(int m[8]){
	int c[]={1,4,1,4,1,2,1,2},ans=2000000000,sum,ansNo=99999999,nowNo,t,p,ansPoint;
	
	for(int i=0;i<8;i++){
		sum=nowNo=0;
		for(int j=0;j<8;j++){
			p=(i+j)%8;
			nowNo*=10;
			nowNo+=c[p];
			t=m[j]-c[p];
			sum+=t>0?t:0;
		}
		if(sum<ans || (sum==ans && ansNo>nowNo)){
			ansNo=nowNo;
 			ans=sum;
			ansPoint=i;
		}
	}
	printf("%d",c[ansPoint]);
	for(int i=1;i<8;i++) printf(" %d",c[(ansPoint+i)%8]);
	printf("\n");
}

int main(){
	int m[8];
	while(1){
		for(int i=0;i<8;i++){
			if(scanf("%d",&m[i])==EOF) return 0;
		}
		calc(m);
	}
}



*0083 Era Name Transformation
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0083
月日はかわらないので年で分岐するだけ。


#include<stdio.h>
int main(){
	int y,m,d,v;
	char *s;
	while(scanf("%d %d %d",&y,&m,&d)!=EOF){
		v=y*10000+m*100+d;
		if(v<18680908){
			printf("pre-meiji\n");
		}else if(v<19120730){
			printf( "meiji %d %d %d\n",y-1867,m,d);
		}else if(v<19261225){
			printf("taisho %d %d %d\n",y-1911,m,d);
		}else if(v<19890108){
			printf( "showa %d %d %d\n",y-1925,m,d);
		}else{
			printf("heisei %d %d %d\n",y-1988,m,d);
		}
	}
}


*0084 Search Engine
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0084
ただ単に [, .] と単語を交互に読むだけ。

 #include<stdio.h>
 #include<string.h>

int main(){
	char word[1025],first=0,len;
	while(scanf("%[^ .,]",word)!=EOF){
		len=strlen(word);
		if(2<len && len<7){
			if(first==0){
				first=1;
			}else{
				printf(" ");
			}
			printf("%s",word);
		}
		if(scanf("%[., ]",word)==EOF) break;
	}
	printf("\n");
}

復元してよろしいですか?