NYOJ A-B Problem

A-B Problem

时间限制:1000 ms  |  内存限制:65535 KB

难度:3

描述

A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧。

现在有两个实数A和B,聪明的你,能不能判断出A-B的值是否等于0呢?

输入
有多组测试数据。每组数据包括两行,分别代表A和B。

它们的位数小于100,且每个数字前中可能包含+,- 号。

每个数字前面和后面都可能有多余的0。

每组测试数据后有一空行。

输出
对于每组数据,输出一行。

如果A-B=0,输出YES,否则输出NO。

样例输入
1
1

1.0
2.0
样例输出
YES
NO
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
char s[110],str[110];
int main()
{
	int i,j,l,n,k,flag,sign,a,b,c,d,e,g;
	while(scanf("%s",s)!=EOF){
		getchar();
		scanf("%s",str);sign=flag=e=g=0;
		l=strlen(s);n=strlen(str);c=l-1;d=n-1;
		for(i=0;i<l;++i){
			if(s[i]=='-')sign=1;
			if(s[i]!='0'&&s[i]!='-'&&s[i]!='+')break;
		}
		for(j=0;j<n;++j){
			if(str[j]=='-')flag=1;
			if(str[j]!='0'&&str[j]!='-'&&str[j]!='+')break;
		}
		a=i;b=j;
		if(strchr(s,'.')){
			for(i=l-1;i>=0;--i){
				if(s[i]!='0')break;
			}
			c=i;
			if(s[c]=='.')c--;
		}
		if(strchr(str,'.')){
			for(j=n-1;j>=0;--j){
				if(str[j]!='0')break;
			}
			d=j;
			if(str[d]=='.')d--;
		}
		if(a>b){
			for(i=b;i<=d;++i){
				if(s[i-b+a]!='0'&&s[i]-b+a!='.')e=1;
				if(str[i]!='0'&&str[i]!='.')g=1;
				if(s[i-b+a]!=str[i])break;
			}
			if(i==(d+1)&&(i-b+a)==(c+1)&&(sign==flag||e==0&&g==0))printf("YES\n");
			else printf("NO\n");
		}
		else{
			for(j=a;j<=c;++j){
				if(s[j]!='0'&&s[j]!='.')e=1;
				if(str[j-a+b]!='0'&&str[i-b+a]!='.')g=1;
				if(s[j]!=str[j-a+b])break;
			}
			if(j==(c+1)&&(j-a+b)==(d+1)&&(sign==flag||e==0&&g==0))printf("YES\n");
			else printf("NO\n");
		}
	}
	return 0;
}
时间: 2024-10-10 12:50:13

NYOJ A-B Problem的相关文章

NYOJ 216 A problem is easy【数学题】

化简一下即可 A problem is easy 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 When Teddy was a child , he was always thinking about some simple math problems ,such as "What it's 1 cup of water plus 1 pile of dough .." , "100 yuan buy 100 pig" .etc..

nyoj A+B Problem IV

A+B Problem IV 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 acmj最近发现在使用计算器计算高精度的大数加法时很不方便,于是他想着能不能写个程序把这个问题给解决了. 输入 包含多组测试数据每组数据包含两个正数A,B(可能为小数且位数不大于400) 输出 每组输出数据占一行,输出A+B的结果,结果需要是最简的形式. 样例输入 1.9 0.1 0.1 0.9 1.23 2.1 3 4.0 样例输出 2 1 3.33 7 测试数据都对,又在网上找了别人说

nyoj 803-A/B Problem

803-A/B Problem 内存限制:64MB 时间限制:1000ms 特判: No 通过数:2 提交数:4 难度:3 题目描述: 做了A+B Problem,A/B Problem不是什么问题了吧! 输入描述: 每组测试样例一行,首先一个号码A,中间一个或多个空格,然后一个符号( / 或者 % ),然后又是空格,后面又是一个号码B,A可能会很长,B是一个int范围的数. 输出描述: 输出结果. 样例输入: 复制 110 / 100 99 % 10 2147483647 / 21474836

nyoj 219 An problem about date 日期计算 附加最优代码(基姆拉尔森公式)

第一次直接计算的   超时了.后来把天数存贮在数组中 也算过了 不知道这题为什么分类在动态规划里面 #include <stdio.h> int main() { int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31},year,mon,day; long long b[9605]={0},sum=0; for(int i=1600;i<9600;i++) { if(i%4==0&&i%100||i%400==0) sum+=3

NYOJ 630 Problem of IP

Problem of IP 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 众所周知,计算机只能识别二进制数据,而我们却习惯十进制.所以人们发明了点分十进制来表示IP地址.即用以点分开的四个十进制数表示32位的二进制IP地址,每个数字代表IP地址中的8位.现在需要你编写程序实现二者之间的转换. 输入 输入包含多组测试数据.每组一行或为32位01字符串,或为一个点分十进制字符串. 输出 对于每一组输入,输出包含一行,为对应的另一种格式的IP地址 样例输入 000000

NYOJ 179 LK&#39;s problem (排序模拟)

链接:click here~~ 题意: 描述 LK has a question.Coule you help her? It is the beginning of the day at a bank, and a crowd  of clients is already waiting for the entrance door to  open. Once the bank opens, no more clients arrive, and  tellerCount tellers be

NYOJ 698 A Coin Problem (斐波那契)

链接:click here 题意: 描述 One day,Jiameier is tidying up the room,and find some coins. Then she throws the coin to play.Suddenly,she thinks of a problem ,that if throw n times coin ,how many situations of no-continuous up of the coin. Hey,Let's solve the

NYOJ 707 A Simple Problem(结构体排序) 睡前一水~~

链接:click here 题意: A Simple Problem 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 You know, just as the title imply, this is a simple problem. In a contest, given the team-id, solved, penalty of all the teams, tell me the champion.If the numbers of solved pr

nyoj 513 A+B Problem IV 【Java大数】

这道题有点小坑.. 特殊数据 输入 0.0 0.0 输出 0 代码: import java.util.Scanner; import java.math.*; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); BigDecimal a, b, temp; temp = new BigDecimal("0.0"); while(cin.hasN

nyoj 803 A/B Problem 【Java大数】

 先用字符串将字符串接收,然后在用BigInteger就好了 代码: import java.util.Scanner; import java.math.*; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); while(cin.hasNextBigInteger()){ BigInteger aa, bb; //a = cin.nextBigDeci