2011年5月17日火曜日

UTPC2011自分の答案

UTPC2011、じっくり参加したかったのですが、実際にはこの後夜通しのイベントがあるので、そこまで気合を入れて参加したわけではありません。「間が悪いなー」というようなものです。ついでにいうと、Top Coder Open Qualify1はイベントとかぶっていて、参加できません。残念です。

実際に答えたのは2問だけでした。気持ちが落ち着かず、大して考えていないというのがその最たる理由ではありますが。一応、2問ともAcceptedでした。

第1問
#include<stdio.h>
typedef unsigned int u_int;
int main(void){
  u_int i,j,m,n,tmp,max=0,in;
  scanf("%u %u",&m,&n);
  for(i=0;i<m;i++){
    tmp=0;
    for(j=0;j<n;j++){
      scanf("%u",&in);
      tmp+=in;
    }
    if(tmp>max) max=tmp;
  }
  printf("%u\n",max);
  return 0;
}


第2問
#include<stdio.h>
#include<string.h>

typedef unsigned int u_int;

int main(void){
  u_int i,j,k,l,c=0;
  char str[16];
  fgets(str,sizeof(str)/sizeof(str[0]),stdin);
  l=strlen(str);
  str[l-1]='\0';
  l--;
  for(i=0;i<l/2;i++){
    if(str[i]=='(' && str[l-i-1]==')' ) continue;
    if(str[i]==')' && str[l-i-1]=='(' ) continue;
    if(str[i]=='i' && str[l-i-1]=='i' ) continue;
    if(str[i]=='w' && str[l-i-1]=='w' ) continue;
    c++;
  }
  if(l%2!=0)  if(str[(l-1)/2]!='i' && str[(l-1)/2]!='w') c++;
  printf("%u\n",c);
  return 0;
}

せっかくなので、practiceの方も載せておきます。
Practice第1問
#include<stdio.h>
#include<math.h>

int main(void){
  double dis,x1,y1,x2,y2,tmpx,tmpy;
  scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
  tmpx=x2-x1;
  tmpy=y2-y1;
  dis=sqrt(tmpx*tmpx+tmpy*tmpy);
  printf("%.8f\n",dis);
  return 0;
}


Practice第2問
#include <stdio.h>

int main(void){
  unsigned long long int n,a,b,c,d;
  unsigned long long int x,i;
  scanf("%llu %llu %llu %llu %llu",&n,&a,&b,&c,&d);
  x=a%d;
  printf("%llu\n",x);
  for(i=2;i<=n;i++){
    x=((b%d)*x+c%d)%d;
    printf("%llu\n",x);
  }
  return 0;
}



0 件のコメント: