组队周赛_Greater New York 2004

本文深入探讨了编程中常见的数学问题,如进制转换及游戏开发核心概念。从基础的进制转化问题到复杂的游戏开发挑战,文章提供了详细解答和深入分析,帮助开发者掌握关键技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值