• 百度之星初赛签到(1001/1005)


    A:Polynomial

    Polynomial

     Time Limit: 2000/1000 MS (Java/Others)
     
     Memory Limit: 32768/32768 K (Java/Others)
    Problem Description

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

    Input

    第一行一个整数 T~(1 leq T leq 100)T (1T100) 表示数据组数。 对于每组数据,第一行一个整数 n~(1 leq n leq 1,000)n (1n1,000),n-1n1 表示多项式 ff 和 gg 可能的最高项的次数(最高项系数不一定非0)。 接下来一行 nn 个数表示多项式 ff,第 ii 个整数 f_i~(0 leq f_i leq 1,000,000)fi​​ (0fi​​1,000,000) 表示次数为 i-1i1 次的项的系数。 接下来一行 nn 个数表示多项式 gg,第 ii 个整数 g_i~(0 leq g_i leq 1,000,000)gi​​ (0gi​​1,000,000) 表示次数为 i-1i1 次的项的系数。 数据保证多项式 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) = 2x
    f(x)=2x g(x) = 1
    g(x)=1 f(x) = 1
    f(x)=1 g(x) = 2x
    g(x)=2x f(x) = 4x + 2
    f(x)=4x+2 g(x) = 2x + 1
    g(x)=2x+1



    思路:上下两个数组从后往前比较一下0出现的位置就行了,就是找到第一个非0位置!:) 答案要么是0/1,要么是1/0,要么就是一个上下需要约分一下的比值
    代码:
    #include<bits/stdc++.h> 
    using namespace std;
    #define LL long long
    #define INF 2000000000
    #define eps 1e-8
    #define pi  3.141592653589793
    const LL mod = 1e9+7;
    struct node{
        int x,y;
    }p[1001];
    int main()
    {
    
         int _;
         for(scanf("%d",&_);_--;){
             int n;
            scanf("%d",&n);
            int Min = 10000000,Max = 0;
            for(int i = 0 ; i < n ; i++){
                scanf("%d",&p[i].x);
            }
            for(int i = 0 ; i < n ; i++){
                scanf("%d",&p[i].y);
            }
            for(int i = n-1 ; i >= 0 ;i --){
                if(p[i].x == 0 && p[i].y == 0)continue;
                
                if(p[i].x == 0 && p[i].y != 0){
                    puts("0/1");break;
                }else if(p[i].x != 0 && p[i].y == 0){
                    puts("1/0");break;
                }else{
                    LL a = __gcd(p[i].x,p[i].y);
                    printf("%lld/%lld
    ",p[i].x*1LL/a,p[i].y*1LL/a);
                    break;
                }//判断非零出现的位置,三种情况
            }
        }
    }
    
    
    E:Seq

    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) \% nan​​=(i=1n1​​ai​​i)%n 其中 a_1 = 1a1​​=1。现给出 nn,需要求 a_nan​​。

    Input

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

    Output

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

    Sample Input
    5
    1
    2
    3
    4
    5
    Sample Output
    1
    1
    0
    3
    0
    思路:打个表发现从n从4开始,6个一循环的。每个循环节里面都有规律可以找。比如除以二,减去一之类的。注意用long long
    代码:

    #include<bits/stdc++.h> 
    using namespace std;
    #define LL long long
    #define INF 2000000000
    #define eps 1e-8
    #define pi  3.141592653589793
    const LL mod = 1e9+7;
    int main()
    {
        
        /*
        LL a[1112];
        int n = 150;
        a[1] = 1LL;
        for(int i = 2 ; i <= n ; i ++){
            LL sum = 0;
            for(int j = 1 ; j <= i-1 ; j ++){
                sum += a[j]*j;
                sum %= i;
            }
            a[i] = sum;
            if( sum + 1 == i )printf("---"); 
            printf("%d : %lld 
    ",i,sum);
        }
        */
         int _;
         for(scanf("%d",&_);_--;){
             LL n;
            scanf("%I64d",&n);
            if(n == 1|| n == 2){
                printf("1
    ");
            }else if(n == 3){
                printf("0
    ");
            }else{
                LL k = n-4;
                if(k%6 == 0){
                    printf("%I64d
    ",n-1);
                }
                else if(k%6==1){
                    printf("%I64d
    ",n/6);
                }
                else if(k%6==2){
                    printf("%I64d
    ",n/2);
                }
                else if(k%6==3){
                    printf("%I64d
    ",n-(k/6+1)*2);
                }
                else if(k%6==4){
                    printf("%I64d
    ",n/2);
                }
                else if(k%6==5){
                    printf("%I64d
    ",k/6+1);    
                }
            }
        }
    }/*
     
    */


  • 相关阅读:
    利用兼容DC和兼容位图实现图形重绘
    MFC实现文件打开和保存功能实现
    CFile文件操作示例
    利用互斥对象实现线程同步的实例说明
    bootstrap3 input 验证样式【转】
    js event 冒泡和捕获事件详细介绍【转】
    Html+Ajax+Springmvc+Mybatis,不用JSP【转】
    hp电脑重装win7 64位 后 所有软件都装不上问题【转】
    bootstrap 模态 modal 小例子【转】
    servlet 获取 post body 体用流读取为空的问题【转】
  • 原文地址:https://www.cnblogs.com/Esquecer/p/11370070.html
Copyright © 2020-2023  润新知