经典的除法表达式题目
参见《算法竞赛入门经典(第二版)》P310~311
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <sstream>
using namespace std;
const int MAXK = 10000;
void solve()
{
int a[MAXK];
string s;
getline(cin, s);
int k = 0;
for (;;) {
size_t found = s.find("/");
if (found == string::npos) {
stringstream ss(s);
ss >> a[k++];
break;
}
string substring = s.substr(0, found);
//cout << substring << endl;
stringstream ss(substring);
ss >> a[k++];
s.erase(0, found + 1);
}
a[1] /= __gcd(a[1], a[0]);
for (int i = 2; i < k; i++) {
a[1] /= __gcd(a[1], a[i]);
}
if (a[1] == 1) puts("YES"); else puts("NO");
}
int main()
{
//freopen("in.txt", "r", stdin);
int t;
scanf("%d\n", &t);
while (t--) {
solve();
}
}
本文介绍了一种用于简化除法表达式的算法实现,通过读取输入字符串并使用__gcd函数来求最大公约数,进而判断给定的除法表达式是否能被简化到分母为1的状态。
592

被折叠的 条评论
为什么被折叠?



