今回は適度な出来でした。自分の実力ではこれぐらいが妥当かな、という点でした。
A: 誤読1回・単純なコーディングミス1回・タイプミス2回とさんざんミスに泣かされた問題でした。23分に254点という酷い出来。
B: 一方でこちらは一発で通り、36分で856点。最初にこっちをやっておけばよかったのですが、後の祭り。
C: 63分にPretest Passedでしたが、ハックされてしまいました。自分の数学的考察に地震がなかったので、調べてみて、ここにたどりつきました。これを使って解いて、107分に808点。ですが、システムテストで引っかかってしまいました。書き間違いでした。残念です。
DとEも読みましたが、私には少々難しすぎました。ただ、Dは面白そうなので、Editrialを読んでみたいとも思いました。
結局,、1110点で、323位/1219人でした。私の出来ならこれぐらいで及第、というところでしょうか。もっと練習をしようという気になる出来でした。
A.ミスが多かったです。#include<stdio.h>
#include<string.h>
int main(void){
char str[1024];
int i,j,k;
fgets(str,sizeof(str)/sizeof(char),stdin);
for(i=0;i<strlen(str);i++){
if(str[i]=='.'){
if(str[i-1]=='9'){
puts("GOTO Vasilisa.");
return 0;
}
if(str[i+1]>='5'){
str[i-1]++;
}
for(j=0;j<i;j++) putchar(str[j]);
putchar('\n');
return 0;
}
}
}
B.これは比較的簡単に解けました。
#include<stdio.h>
int sum(int array[],int size){
int sum=0,i;
for(i=0;i<size;i++) sum+=array[i];
return sum;
}
int main(void){
int cup[1000];
int n;
int ave;
int i,j,k;
int count=0;
scanf("%u",&n);
for(i=0;i<n;i++) scanf("%d",&cup[i]);
ave=sum(cup,n);
if(ave%n!=0){
puts("Unrecoverable configuration.");
return 0;
}
ave/=n;
for(i=0;i<n;i++) cup[i]-=ave;
for(i=0;i<n;i++) count+=(cup[i]!=0);
if(count==0){
puts("Exemplary pages.");
return 0;
}else if(count!=2){
puts("Unrecoverable configuration.");
return 0;
}else{
for(i=0;i<n;i++){
if(cup[i]<0){
j=i;
count--;
}else if(cup[i]>0){
k=i;
count--;
}
if(count==0) break;
}
printf("%d ml. from cup #%d to cup #%d.\n",cup[k],j+1,k+1);
}
return 0;
}
C.上に書いたサイトをもっと早く見つけられていれば、もっと早く解けたのですが…惜しいことをしました。
#include<stdio.h>
int main(void){
int color[6],i,kosu[7];
char str[8];
fgets(str,sizeof(str),stdin);
for(i=0;i<6;i++) color[i]=0;
for(i=0;i<6;i++){
switch(str[i]){
case 'R':
color[0]++;
break;
case 'O':
color[1]++;
break;
case 'Y':
color[2]++;
break;
case 'G':
color[3]++;
break;
case 'B':
color[4]++;
break;
case 'V':
color[5]++;
break;
}
}
for(i=0;i<7;i++) kosu[i]=0;
for(i=0;i<6;i++) kosu[color[i]]++;
if(kosu[6]==1 || kosu[5]==1){
puts("1");
}else if(kosu[4]==1 || kosu[3]==2){
puts("2");
}else if(kosu[3]==1){
puts("5");
}else if(kosu[2]==3){
puts("6");
}else if(kosu[2]==2){
puts("8");
}else if(kosu[2]==1){
puts("15");
}else{
puts("30");
}
return 0;
}
0 件のコメント:
コメントを投稿