HDU-2054 A == B ?(高精度字符是否值相同)
2018-03-16 15:57
176 查看
HDU-2054 A == B ?(高精度字符是否值相同)
Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO". Input each test case contains two numbers A and B.
Output for each case, if A is equal to B, you should print "YES", or print "NO". Sample Input
#include<string.h>
int searchpoint(char s[],int n)
{
for(int i=0;i<n;i++)
{
if(s[i]=='.')
return 1;
}
return 0; //找小数点
}
int qweitoupoint(char s[],int n)
{
int i,j;
for(i=n-1;i>=0;i--)
{
if(s[i]=='0')
n--;
else
break;
}
if(s[n-1]=='.')n--;
i=0;
if(s[i]=='-'||s[i]=='+')
{
n--;
i++;
}
if(s[i]==0)
{
for(j=i;s[j+1]='0';j++)
{
n--;
}
}
return n; //去小数末尾的0,小数点,前面的0;利用去其长度的方法,
}
int main()
{
int len1,len2;
char s1[100010],s2[100010];
while(scanf("%s%s",s1,s2)!=EOF)
{
int flag=1;
if((s1[0]=='-'&&s2[0]!='-')|| (s2[0]=='-'&&s1[0]!='-')) //在main一开始就处理符号问题 ,只考虑no的情况
{
printf("NO\n");
}
else
{
len1=strlen(s1);
len2=strlen(s2);
if(searchpoint(s1,len1)) //大数比较,用字符数组,去掉不必要的,变于测真正的长度,因为一部分是考长度处理的
{
len1=qweitoupoint(s1,len1);
}
if(searchpoint(s2,len2))
{
len2=qweitoupoint(s2,len2);
}
if(len1!=len2)
{
//两个数的长度不一致,直接可以确定为不相等。
flag=0;
}
else
{
int i=0,j=0;
if(s1[0]=='+'||s1[0]=='-')
{
i=1;
len1++;
}
if(s2[0]=='+'||s2[0]=='-')
{
j=1;
len2++;
} //+,-不能像后面的0那样,利用i<len1消 ,只能这样处理
while(i<len1&&j<len2)
{
if(s1[i]!=s2[j])
{
flag=0;
break;
}
i++;
j++;
}
}
if(flag)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
}
return 0;
}
Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO". Input each test case contains two numbers A and B.
Output for each case, if A is equal to B, you should print "YES", or print "NO". Sample Input
1 2 2 2 3 3 4 3Sample Output
NO YES YES NO#include<stdio.h>
#include<string.h>
int searchpoint(char s[],int n)
{
for(int i=0;i<n;i++)
{
if(s[i]=='.')
return 1;
}
return 0; //找小数点
}
int qweitoupoint(char s[],int n)
{
int i,j;
for(i=n-1;i>=0;i--)
{
if(s[i]=='0')
n--;
else
break;
}
if(s[n-1]=='.')n--;
i=0;
if(s[i]=='-'||s[i]=='+')
{
n--;
i++;
}
if(s[i]==0)
{
for(j=i;s[j+1]='0';j++)
{
n--;
}
}
return n; //去小数末尾的0,小数点,前面的0;利用去其长度的方法,
}
int main()
{
int len1,len2;
char s1[100010],s2[100010];
while(scanf("%s%s",s1,s2)!=EOF)
{
int flag=1;
if((s1[0]=='-'&&s2[0]!='-')|| (s2[0]=='-'&&s1[0]!='-')) //在main一开始就处理符号问题 ,只考虑no的情况
{
printf("NO\n");
}
else
{
len1=strlen(s1);
len2=strlen(s2);
if(searchpoint(s1,len1)) //大数比较,用字符数组,去掉不必要的,变于测真正的长度,因为一部分是考长度处理的
{
len1=qweitoupoint(s1,len1);
}
if(searchpoint(s2,len2))
{
len2=qweitoupoint(s2,len2);
}
if(len1!=len2)
{
//两个数的长度不一致,直接可以确定为不相等。
flag=0;
}
else
{
int i=0,j=0;
if(s1[0]=='+'||s1[0]=='-')
{
i=1;
len1++;
}
if(s2[0]=='+'||s2[0]=='-')
{
j=1;
len2++;
} //+,-不能像后面的0那样,利用i<len1消 ,只能这样处理
while(i<len1&&j<len2)
{
if(s1[i]!=s2[j])
{
flag=0;
break;
}
i++;
j++;
}
}
if(flag)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
}
return 0;
}
相关文章推荐
- [leetcode 318]Maximum Product of Word Lengths--判断两个字符串是否有相同的字符
- 如何快速的判断两个string中是否含有相同的字符
- [字符串算法题]2.判断两个字符串是否由相同的字符组成
- 1.1---判断字符串是否所有字符都不相同(CC150)
- Java高精度练习 Hdu 1002+1042+1047+1212+1316+1715+1753+2054
- -比较第一与第二个字符串,是否有连续的5个字符相同,如果有
- 判断两个字符串s1 s2所含字符是否相同
- 查找字符串中是否包含相同字符
- [算法]判断两个字符串是否由相同的字符组成
- [字符串算法题]2.判断两个字符串是否由相同的字符组成
- 编写判断一个字符序列是否为回文。回文是指一个字符序列以中间 字符为基准两边字符完全相同,即顺着看和倒着看是相同的字符序列。
- kmp变形 如何判断第i个字符是否匹配函数 hdu 4749
- 判断一个字符串(超过80个字符)是否是回文结构(正序和逆序相同)
- java 判断两个字符串是否由相同的字符组成 排序算法 空间换时间的方法
- 判断两个字符串是否由相同的字符组成
- 判断两个字符串是否由相同的字符组成
- 判断是否是简单密码,不能包含相同的字符(如aaa,111),递增序列(abc,123),递减序列(cda,321)
- HDU 3791 比较两棵二叉搜索树是否相同(建树,比较)
- 判断ch中的字符是否与str所指串中的某个字符相同;若相同什么也不做。若不同,插在最后
- 1.4-判断两个字符串是否由相同字符组成