zoukankan      html  css  js  c++  java
  • 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;
    }

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

  • 相关阅读:
    iOS开发- 蓝牙后台接收数据(BLE4.0)
    代码优化之减少重复代码-实践
    微信iOS多设备多字体适配方案总结
    iOS微信小视频优化心得
    iOS项目工程及目录结构
    手机淘宝 521 性能优化项目揭秘
    最大连续和
    struts2入门
    Maven环境搭配及继承
    easyui高级控件
  • 原文地址:https://www.cnblogs.com/liudehao/p/3922420.html
Copyright © 2011-2022 走看看