HDU-2054
- 首先,1A我也是醉了。
- 木有用STL
- 神样例我也没有
- 最后,第二次用Markdown,用的可能比较渣,客官凑合着看哈
代码
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <climits>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <utility>
#include <stack>
#include <functional>
using namespace std;
typedef long long lovelive;
const int inf = INT_MAX;
const double pai = acos(-1.0);
const double gold = (sqrt(5.0) - 1.0) / 2.0;
struct num
{
char num_str_arr[100117];
int start, fine, devide, len;
void init()
{
memset(num_str_arr, 0, sizeof(num_str_arr));
start = fine = 0;
devide = -1;
}
void find_lenth()
{
len = strlen(num_str_arr);
}
void flag_front()
{
int i, j, k;
for(i = 0; i < len; ++i)
{
if(num_str_arr[i] != '0')
{
start = i;
break;
}
}
}
void flag_end()
{
int i, j, k;
for(i = len - 1; i >= 0; --i)
{
if(num_str_arr[i] != '0')
{
fine = i;
break;
}
}
}
void flag_devide()
{
for(int i = 0; i < len; ++i)
{
if(num_str_arr[i] == '.')
{
devide = i;
break;
}
}
if(devide == -1)
{
num_str_arr[len] = '.';
len += 1;
num_str_arr[len] = '\0';
}
}
};
num num1, num2;
void input_data()
{
int i, j, k;
num1.find_lenth();
num1.flag_devide();
num1.flag_front();
num1.flag_end();
num2.find_lenth();
num2.flag_devide();
num2.flag_front();
num2.flag_end();
return ;
}
void solve()
{
int i, j, k;
if(num1.fine - num1.start != num2.fine - num2.start)
{
printf("NO\n");
return ;
}
else
{
for(i = 0; i <= num1.fine - num1.start; ++i)
{
if(num1.num_str_arr[i + num1.start] != num2.num_str_arr[i + num2.start])
{
printf("NO\n");
return ;
}
}
printf("YES\n");
}
return ;
}
int main(int argc, char const *argv[])
{
#ifndef ONLINE_JUDGE
freopen("in.in", "r", stdin);
#endif
int i, j, k;
while(scanf("%s %s", num1.num_str_arr, num2.num_str_arr) != EOF)
{
num1.devide = num2.devide = -1;
input_data();
solve();
num1.init(), num2.init();
}
return 0;
}