• HDU -2100-Lovekey


    题目链接

    http://acm.hdu.edu.cn/showproblem.php?pid=2100

    这题开始一直想着先把26进制转换成10进制,在转换成26进制,又200个字符因而行不通,

    直接卡死了,不会做,后来才知道因为是200的长度的字符串,所以啊,就是用到大数相加的思想了。

    引用http://blog.csdn.net/q3498233/article/details/4427447的思路

    解题思路:也是一道进制转换的问题啦,其实把字母转换成10进制后,再转换回26进制,本身就是一个逆过程。根本不用转换成10进制啦,就在26进制的基础上进行加法就是了,相加的和超过25,就进位啦,别被题目的提示给忽悠了。因为是200的长度的字符串,所以啊,就是用到大数相加的思想了

    特别注意:数据如果给的是 AAAAAAAAA    *的话最后结果就是*,*是任意一个字母,这是特殊情况,大家要注意啦。

     将字符串逆序,为计算方便,将长度比较少的那个字符串后面补零,,最后逆序输出即可。

    我的AC代码

    #include<stdio.h>
    #include<string.h>
    char a[210],b[210],c[210],d[210];
    int main(void)
    {
    int i,p,q,n,s;
    while(scanf("%s%s",c,d)==2)
    {
    p=strlen(c);
    q=strlen(d);
    for(i=p-1;i>=0;i--)
    a[p-1-i]=c[i];
    a[p]='';
    for(i=q-1;i>=0;i--)
    b[q-1-i]=d[i];
    b[q]='';
    n=p;
    if(p<q)
    {
    for(i=p;i<q;i++)
    a[i]='A';
    a[i]='';
    n=q;
    }
    if(p>q)
    {
    for(i=q;i<p;i++)
    b[i]='A';
    a[i]='';
    n=p;
    }
    s=0;
    for(i=0;i<n;i++)
    {
    a[i]=a[i]+b[i]+s-'A';
    if(a[i]>'Z')
    {
    s=1;
    a[i]=a[i]-26;
    }
    else
    s=0;
    }
    if(s==1)
    {
    a[i]='B';
    n++;
    }
    for(i=n-1;i>=0;i--)
    {
    if(a[i]=='A')
    n--;
    else
    break;
    }
    for(i=n-1;i>=0;i--)
    printf("%c",a[i]);
    printf(" ");
    }
    return 0;
    }

    题目得多做多思考,才有进步。

  • 相关阅读:
    nginx的简介和配置文件实例(一)
    Tomcat基础配置(一)
    redis主从复制以及SSDB主主复制环境部署记录(四)
    redis主从原理介绍(三)
    redis介绍和安装和主从介绍(二)
    celery
    网络-sdn
    djang问题汇总
    django路由url
    django开发环境配置
  • 原文地址:https://www.cnblogs.com/liudehao/p/3922420.html
Copyright © 2020-2023  润新知