Spreadsheets codeforces1B(模拟+进制转换)

http://codeforces.com/problemset/problem/1/B

题意:转换两种行和列的表示方法。

分析:(弱弱的说下一开始自己并不会写,只是想到AA=26*1+1,就想着用除法和余数来解决了,后来发现这么模拟下去,数据好大啊,心好累。。然后就没有然后了)。后来问的别人,告诉我用26进制转换(我去,我为啥想不到,啥都别说了,看代码)

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <queue>
#include <stack>
#include <math.h>

using namespace std;

#define INF 0x3f3f3f3f
const int maxn = 1000005;
typedef long long LL;
char str[maxn];
int flag;

void change(int n)///26进制转换
{
    if(n>26) change((n-1)/26);

    printf("%c",(n-1)%26+‘A‘);
}

void solve1()
{
    int row=0;
    int col=0;
    for(int i=1; i<flag; i++)
    {
        if(isdigit(str[i]))///计算行
            row=row*10+str[i]-‘0‘;
    }

    for(int i=flag+1; str[i]; i++)
    {
        if(isdigit(str[i]))///计算列
          col=col*10+str[i]-‘0‘;
    }

    change(col);///转换列

    printf("%d\n", row);
}

void solve2()
{
    int row = 0;
    int col = 0;

    for(int i=0; str[i]; i++)
    {
        if(isupper(str[i]))
            col=col*26+str[i]-‘A‘+1;///计算列
        else
            row=row*10+str[i]-‘0‘;///计算行
    }

    printf("R%dC%d\n", row, col);
}

int main()
{
    int T;

    scanf("%d", &T);

    while(T --)
    {
        scanf("%s", str);
        flag = 0;

        if((str[0]==‘R‘) && isdigit(str[1]))
        {
            for(int i=2; str[i]; i++)
            {
                if(str[i]==‘C‘)
                {
                    flag=i;
                    break;
                }
            }
        }

        if(flag) solve1();///判断‘R23C55’这一种情况
        else solve2();///判断‘BC23’这一种情况

    }
    return 0;
}

时间: 2024-08-25 14:32:54

Spreadsheets codeforces1B(模拟+进制转换)的相关文章

HDU4814——数学,模拟进制转换

本题围绕:数学公式模拟进制转换 HDU4814 Golden Radio Base 题目描述 将一个十进制的非负整数转换成E(黄金分割数)进制的数 输入 不大于10^9的非负整数,处理到文件尾 输出 转换成的E进制数(可能含有小数) 样例输入 1 2 3 6 10 样例输出 1 10.01 100.01 1010.0001 10100.0101 题目分析 对于本题,要注意的点有:首先对于一个十进制的正数,我们是可以严格转换成一个E(黄金分割数)进制的数的,而不是涉及到约等于,例如10-base的

大数进制转换问题

在数据结构课关于栈的这一章中,我们都学过用"模2取余法"来将一个10进制数转换为一个二进制数,进而可以推广到"模n取余法",经其转换为n进制(n任意指定). 确实,这是一个很基础的题目,可你是否想过如果这个10进制数是一个大数(其位数可能上千位,此时用一般数据类型肯定是会溢出的),那么这个问题又如何来求解呢? 当然,也许你会说很简单嘛,自己写一个大数类(当然至少要写一个大数除法才行),或者你用的是Java这种现代化语言,就更轻松了,直接用BigInteger这样的大

高精度的进制转换

1 #include <stdio.h> 2 #include <string.h> 3 4 char str[1000];//输入字符串 5 int start[1000],ans[1000],res[1000]; //被除数,商,余数 6 //res[]存的是余数,其最后结果的逆序为所求的结果 7 //转换前后的进制 8 const int oldBase = 10; 9 const int newBase = 2; 10 11 void change() 12 { 13 //

暴力/进制转换 Codeforces Round #308 (Div. 2) C. Vanya and Scales

题目传送门 1 /* 2 题意:问是否能用质量为w^0,w^1,...,w^100的砝码各1个称出重量m,砝码放左边或在右边 3 暴力/进制转换:假设可以称出,用w进制表示,每一位是0,1,w-1.w-1表示砝码与物品放在一起,模拟判断每位是否ok 4 详细解释:http://blog.csdn.net/u011265346/article/details/46556361 5 总结:比赛时压根没往进制去想,连样例也不知道是怎么回事..中文不行啊:( 6 */ 7 #include <cstdi

Java基础笔记(3) 进制与进制转换

---恢复内容开始--- 进制 在一般生活中,我们一直在应用的十进制,就是逢十进一,而今天我们要接触的是,计算机编程常用的进制!首先我们要知道,计算机内部运算采用的是二进制,也就是逢二进制! 1.什么是二进制? 就是只有0 和 1  每当遇到值为2 就向前进一位. 2.为什么计算机内部是二进制? 这就要从硬件说起,计算机是如何储存数据的,要知道我们网络传输,就是你要和别人一起聊天,你们隔着很远,到底是怎样才能让他收到你的聊天内容? 有一根网线还能说过去,毕竟网线链接终端我们也不知道连到哪,保不齐

【轻院热身赛】级数求和、进制转换

[级数求和] Problem A: 级数求和 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 409  Solved: 240 SubmitStatusWeb Board Description 已知:Sn= 1+1/2+1/3+…+1/n.显然对于任意一个整数K,当n足够大的时候,Sn大于K.现给出一个整数K(1<=k<=15),要求计算出一个最小的n:使得Sn>K. Input 键盘输入 k Output 屏幕输出 n Sample In

洛谷——P1143 进制转换

P1143 进制转换 题目描述 请你编一程序实现两种不同进制之间的数据转换. 输入输出格式 输入格式: 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A-F表示数码10-15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16). 输出格式: 输出仅一行,包含一个正整数,表示转换之后的m进制数. 输入输出样例 输入样例#1: 复制 16 FF 2 输出

CodeForces 1B-字符串,进制转换与数学

一个萌新的成长之路 Background 同学们都回家了,只有我和wjh还有邢神在机房敲代码,吃random口味的方便面-- Description Translated by @PC_DOS from luogu In the popular spreadsheets systems (for example, in Excel) the following numeration of columns is used. The first column has number A, the se

数据概述与进制转换

什么是数据 数据是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材. 数据是信息的表现形式和载体,信息是数据的内涵.数据本身没有意义,数据只有对实体行为产生影响时才成为信息. 计算机中的数据按照表现形式可分为两类: 数字数据:由阿拉伯数字符号构成的数据.如各种统计或量测数据 模拟数据:在某个区间内产生的连续值,如视频.图像.声音等 在计算机系统中,数据以二进制信息单元0.1的形式表示. 进制及进制转换 1.计算机采用二进制的主要原因 技术实现简单 简化运算规则 适