判断大数相等

来源:互联网 发布:湛江 知乎 编辑:程序博客网 时间:2024/05/22 05:30

很久没写程序了,今天起来时已经八点多了,本来打算写一下java呢(java很久没看了,忘得差不多了),结果没看java,却刷了一道水题。是一道关于判断大数相等的问题。思路很简单,就是比较字符串是否相等,细分起来

分为 1、小数与小数比较

        2、小数与整数比较

        3、整数与整数比较

这三种情况,如果第三种情况,直接比较字符串是否相等,就行了(不存在比较 1 ,001,这样的情况)

                      第二种情况与情况,主要是把小数后多余的0去掉(1.0 与1.00000他们是相等的)

注意一点他们的数似乎很大

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2054

#include <stdio.h>#include <iostream>#include <math.h>#include <string.h>using namespace std ;#define MAXN 6000000//对小数处理void work(char num[]){    int k =strlen(num) - 1;   for( ; k!='.'&&num[k]=='0' ;k--)     num[k]= '\0';    if(num[k]=='.')num[k]= '\0';}//判断是否是小数bool HavePoint(char num[]){    for(int i = 0 ;num[i]!='\0';i++)       if(num[i]=='.')       return true ;       return false ;}//对小数进行性处理void dispose(char num[]){    if(HavePoint(num)){        work(num) ;    }}//比较是否相等bool ABequal(char numa[] ,char numb[]){    int  i ;    dispose(numa) ;    dispose(numb);    for(i = 0 ; numa[i]!='\0'||numb[i]!='\0' ; i++)     if(numa[i] !=numb[i]) return false ;     return true ;}char  numa[MAXN] ,numb[MAXN] ;//主函数int main(){    while(scanf("%s %s",numa ,numb)!=EOF){         if(ABequal(numa ,numb))         cout<<"YES"<<endl;        else        cout<<"NO"<<endl;    }}

平心而论这一题太水,不值得写博客,但是我还是写了,是因为,我要再次投入编程的的学习







       

0 0