【题解】HDU6668 Polynomial⭐【水题】

HDU6668 Polynomial

度度熊最近学习了多项式和极限的概念。
现在他有两个多项式 f(x) 和 g(x),他想知道当 x 趋近无限大的时候,f(x)/g(x) 收敛于多少。

Input

第一行一个整数 T (1≤T≤100) 表示数据组数。
对于每组数据,第一行一个整数 n (1≤n≤1,000),n−1 表示多项式 f 和 g 可能的最高项的次数(最高项系数不一定非0)。
接下来一行 n 个数表示多项式 f,第 i 个整数 fi (0≤fi≤1,000,000) 表示次数为 i−1 次的项的系数。
接下来一行 n 个数表示多项式 g,第 i 个整数 gi (0≤gi≤1,000,000) 表示次数为 i−1 次的项的系数。
数据保证多项式 f 和 g 的系数中至少有一项非0。

Output

对于每组数据,输出一个最简分数 a/b(a 和 b 的最大公约数为1)表示答案。
如果不收敛,输出 1/0。

Examples

Sample Input
3
2
0 2
1 0
2
1 0
0 2
3
2 4 0
1 2 0

Sample Output
1/0
0/1
2/1

样例描述
这些多项式分别为
f ( x ) = 2 x f(x) = 2x f(x)=2x
g ( x ) = 1 g(x) = 1 g(x)=1
f ( x ) = 1 f(x) = 1 f(x)=1
g ( x ) = 2 x g(x) = 2x g(x)=2x
f ( x ) = 4 x + 2 f(x) = 4x + 2 f(x)=4x+2
g ( x ) = 2 x + 1 g(x) = 2x + 1 g(x)=2x+1

Hint




题意:

题解:

签到题, 从后往前找到第一个非0项, 判一下

经验小结:


#include
using namespace std;
#define ms(x, n) memset(x,n,sizeof(x));
typedef  long long LL;
const int inf = 1<<30;
const int maxn = 1010;
//const LL inf = 0x3f3f3f3f3f3f3f3f;

int T, n, g[maxn], f[maxn];
int main()
{
    cin >> T;
    while(T--){
        cin >> n;
        for(int i = 0; i < n; ++i)
            cin >> f[i];
        for(int i = 0; i < n; ++i)
            cin >> g[i];
        int t = n-1;
        while(f[t]==0 && g[t]==0 && t >= 0)
            --t;
        if(f[t] == 0 && g[t] == 0)
            printf("0/0\n");
        else if(f[t] == 0)
            printf("0/1\n");
        else if(g[t] == 0)
            printf("1/0\n");
        else{
            int gcd = __gcd(f[t], g[t]);
            printf("%d/%d\n",f[t]/gcd, g[t]/gcd);
        }
    }

    return 0;
}

你可能感兴趣的:(水题)