1.Bullseye
投镖的问题,就一数学加模拟,比赛的数据错了,我也手残几次,刚组队不习惯用Ubuntu系统。。。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
double diss(double x,double y)
{
return x*x+y*y;
}
int main()
{
double x1,x2,x3,x4,x5,x6,y1,y2,y3,y4,y5,y6,dis[10];
int sum1,sum2,i;
while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4,&x5,&y5,&x6,&y6))
{
if(x1==-100)break;
sum1=0;sum2=0;
dis[1]=diss(x1,y1);
dis[2]=diss(x2,y2);
dis[3]=diss(x3,y3);
dis[4]=diss(x4,y4);
dis[5]=diss(x5,y5);
dis[6]=diss(x6,y6);
for(i=1;i<=3;i++)
{
if(dis[i]<=3*3)sum1+=100;
else if(dis[i]<=6*6)sum1+=80;
else if(dis[i]<=9*9)sum1+=60;
else if(dis[i]<=12*12)sum1+=40;
else if(dis[i]<=15*15)sum1+=20;
}
for(i=4;i<=6;i++)
{
if(dis[i]<=3*3)sum2+=100;
else if(dis[i]<=6*6)sum2+=80;
else if(dis[i]<=9*9)sum2+=60;
else if(dis[i]<=12*12)sum2+=40;
else if(dis[i]<=15*15)sum2+=20;
}
if(sum1==sum2)
printf("SCORE: %d to %d, TIE.\n",sum1,sum2);
else
{
if(sum1>sum2)
printf("SCORE: %d to %d, PLAYER 1 WINS.\n",sum1,sum2);
else
printf("SCORE: %d to %d, PLAYER 2 WINS.\n",sum1,sum2);
}
}
return 0;
}
2.An Excel-lent Problem
进制转化的问题,比赛的时候是Hypo和wz一起A的,赛后觉得应该不难的样子,就是26进制转化,可想了好几天,一直觉得怪怪的,第一,26个字符不包括余数是0,第二,进制的关系理不清。。。
最后,貌似找到思路,其实又不对,只好看下题解。。。渣渣。。。
当余数是0的时候要把它当作Z,然后原数减一。。。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;
char f[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int bin[10000000];
int main()
{
int r,c,i,j;
while(~scanf("R%dC%d%*c",&r,&c))
{
if(!c&&!r)break;
int cnt=0;
while(c)
{
bin[cnt++]=c%26;
if(bin[cnt-1]==0)
{
bin[cnt-1]=26;
c--;
}
c/=26;
}
for(i=cnt-1;i>=0;i--)
printf("%c",f[bin[i]-1]);
printf("%d\n",r);
}
return 0;
}