2019年百度之星·程序设计大赛 - 初赛一1001 Polynomial & 1005 Seq

                                                Polynomial

 Time Limit: 2000/1000 MS (Java/Others)

 Memory Limit: 32768/32768 K (Java/Others)

Problem Description

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

Input

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

Output

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

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) = 2xf(x)=2x
g(x) = 1g(x)=1
f(x) = 1f(x)=1
g(x) = 2xg(x)=2x
f(x) = 4x + 2f(x)=4x+2
g(x) = 2x + 1g(x)=2x+1

这道题求极限收敛,看两个多项式的最高项之比(不能同时为0)。

#include 
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
const int MAXN = 1e6 + 7;

int gcd(int a, int b)
{
    return b ? gcd(b ,a%b) : a;
}
struct node
{
    int x;
    int y;
}stu[MAXN];

int main()
{
    ios::sync_with_stdio(0);
    int t, n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(int i = 0; i < n; i++)
            cin>>stu[i].x;
        for(int i = 0; i < n; i++)
            cin>>stu[i].y;
        for(int i = n-1; i >= 0; i--)
            if(stu[i].x||stu[i].y)
            {
                if(stu[i].y  == 0)
                    cout<<"1/0"<

                                                       Seq

 Time Limit: 2000/1000 MS (Java/Others)

 Memory Limit: 32768/32768 K (Java/Others)

Problem Description

度度熊有一个递推式 a_{n} = (\sum_{i=1}^{n-1} a_{i}*i) \% na​n​​=(∑​i=1​n−1​​a​i​​∗i)%n 其中 a_1 = 1a​1​​=1。现给出 nn,需要求 a_na​n​​。

Input

第一行输入一个整数 TT,代表 T~(1 \leq T \leq 100000T (1≤T≤100000) 组数据。 接下 TT 行,每行一个数字 n~(1\leq n \leq 10^{12})n (1≤n≤10​12​​)。

Output

输出 TT 行,每行一个整数表示答案。

Sample Input

5
1
2
3
4
5

Sample Output

1
1
0
3
0

这道题一看就是规律题,n = 1e12,递推没法做。然后打表看了许久发现从3开始每6个就有规律了。

2019年百度之星·程序设计大赛 - 初赛一1001 Polynomial & 1005 Seq_第1张图片

可以发现,(n-3)%6取余就是规律。

#include 
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
const int MAXN = 1e5 + 7;

int main()
{
    ios::sync_with_stdio(0);
    int t;
    ll n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        if(n < 3)
        {
            cout<<1<

 

你可能感兴趣的:(百度之星)