P9203题解

· · 题解

题目大意

给定两个非整数,判断这两个数相减是否为整数。

题目分析

思路一:

如题,两数相减,判断是否为整数。

主要代码:

int main(){
    a -= b;
    if(a - (int)(a) == 0.000000000000)
        printf("YES");
    else
        printf("NO");
    return 0;
}

思路二:

分别删去两数的整数部分,判断剩余是否相等。

主要代码:

int main(){
    a -= (int)(a);
    b -= (int)(b);
    if(a == b)
        printf("YES");
    else
        printf("NO");
    return 0;
}

思路三:

鉴于前两种思路容易挂精度,我们观察思路二,实际上就是判断两数的小数部分是否相等,因为输入时两数都保留 12 位小数,所以我们读入时可以将整数部分用 int 读入,小数点用字符读入,小数部分用字符串读入,即可比较两数的小数部分了。

AC code:

#include <iostream>
#include <cstdio>

using namespace std;

int a, b;
char c;
string s1, s2;

int main()
{
    cin >> a >> c >> s1 >> b >> c >> s2;
    (s1 == s2) ? printf("YES") : printf("NO");
    return 0;
}