美文网首页
杭电ACM-2054(A==B?)

杭电ACM-2054(A==B?)

作者: 1QzUPm_09F | 来源:发表于2017-01-23 20:26 被阅读0次

题目:

2054题

这道题看起来很简单 甚至不用想就会编出以下代码:

#include<stdio.h>
int main()
{
    int a,b;
    while(~scanf("%d%d",&a,&b))
    {
        if(a==b)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

果断wrong 哈哈哈~~~!!!

答案肯定不是那么简单的,原因就是高精度问题,如果是超长的数列呢???int、long long、double都放不下呢?所以这道题要用高精度的思想来做→→→开数组

开数组一定要考虑下面的问题:
①5.00000 与 5 一个有小数点一个没有
②5.00 与 5000 字符串的长度都一样 但是2个数不一样

方法也有2个:
①去0去小数点
②装入新数组

#include<stdio.h>
#include<string.h>
char a[100000],b[100000];
void change(char s[])
{
    int len,i;
    len=strlen(s);
    if(strstr(s,"."))
    {
        for(i=len-1;s[i]=='0';i--)
        {
            s[i]='\0';
            len--;
        }
    }
    if(s[len-1]=='.')
        s[len-1]='\0';
}
int main()
{
    while(~scanf("%s%s",&a,&b))
    {
        change(a);
        change(b);
        if(strcmp(a,b)==0)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

AND——————————————————————————————————————

#include<stdio.h>
#include<string.h>
char a[100000],b[100000],c[100000],d[100000];
int i,k,len1,len2;
int main()
{
    while(~scanf("%s%s",&a,&b))
    {
        len1=strlen(a);
        len2=strlen(b);
        k=len1;
        for(i=len1-1;a[i]=='0';i--);
        if(strstr(a,".")==0)
        {
            i=len1-1;
        }
        for(k=0;k<=i;k++)
            c[k]=a[k];
        if(c[k-1]=='.')
            c[k-1]='\0';
        else
            c[k]='\0';

        k=len2;
        for(i=len2-1;b[i]=='0';i--);
        if(strstr(b,".")==0)
        {
            i=len2-1;
        }
        for(k=0;k<=i;k++)
            d[k]=b[k];
        if(d[k-1]=='.')
            d[k-1]='\0';
        else
            d[k]='\0';

        if(strcmp(c,d)==0)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

然后就是一个新学的知识:
strstr(str,"n");

if(strstr(a,".")==0)
判断a数组中是否有"."(小数点)

char *strstr(const char *str1, const char *str2);

include<string.h>

找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。

相关文章

  • 杭电ACM-2054(A==B?)

    题目: 这道题看起来很简单 甚至不用想就会编出以下代码: 果断wrong 哈哈哈~~~!!! 答案肯定不是那么简单...

  • 杭电-1002 A + B Problem II

    注意 最后一行输出仅需一个空行 markdown代码的插入符号为“ ``` ”(~)不是“ ''' ”

  • 杭电oj-1000(A+B Problem)

    Problem Description Input Output Sample Input Sample Outp...

  • 杭电oj-1002(A + B Problem II)

    Problem Description Input Output Sample Input Sample Outp...

  • 杭电oj-1002--A + B Problem II

    很多细节,,,,,,,

  • 杭电助手

    杭电助手(服务号hduhelp,订阅号hduhelper)是隶属于杭州电子科技大学党委学工部的校级组织,我们有前端...

  • 杭电2015

    这道题看起来不复杂,但做起来还是挺费工夫的。里面要用很多的循环结构,很容易在些小地方出错。我就是因为那些小问题而搞...

  • 杭电打卡

    这题主要是数学方法求解,其他没什么难度,关键是得出递推公式。 假如第一个和最后一个格子能相同颜色,我们可以很快算出...

  • 杭电oj 第11页 java版答案

    杭电oj 第2000- 2099 题 全答案杭电oj 第十一页答案 具体路径在 src/main/java/com...

  • 杭电ACM1001

    不再更新,杭电ACM的题转到csdn博客

网友评论

      本文标题:杭电ACM-2054(A==B?)

      本文链接:https://www.haomeiwen.com/subject/ppnabttx.html