• Codeforces Round #281 (Div. 2)


    a.水

    b.水的我想吐,奈何英文渣读题读半天还读错了(所以所最讨厌模拟了就以因为读不懂题啊O(≧口≦)O)。

    c.水枚举。

    d.水博弈单数前走一步后每步模仿对手走。

    e.我就没资格说水了,因为我也是看结题报告才懂的。。

    就酱。 P(x) = a0 + a1x1 + ... + anxn.缩减式子可得(P(x) -a0)/x得到以a1开头的新式子(由于ax不知道所以随便了对不对O(∩_∩)O~~)

    两式子都酱一步一步递归缩减,最终y1||y2==0时说明式子到头了,然后有可能超时的地方就是枚举a0的时候a0可能过小导致枚举过多,这时候如果(x2>x1)就swap能避免tle。

    详情见http://hzwer.com/5390.html

    #include<string.h>
    #include<stdio.h>
    #include<iostream>
    using namespace std;
    long long ans;
    void sum(long long x1, long long y1, long long x2, long long y2){
        if(y1 == 0 || y2 == 0){
            if(y2 == 0 && y1 == 0)
                ans++;
            return ;
        }
        if(x2 > x1){
            swap(x1, x2);
            swap(y1, y2);
        }
        long long a = y1%x1;
        for(long long i = 0; ; i++){
            long long a0 = i*x1+a;//printf("*%lld
    ", a0);
            if(a0 > y1 || a0 > y2)break;
            if((y2-a0)%x2 == 0){
                sum(x1, (y1-a0)/x1, x2, (y2-a0)/x2);
            }
        }
    }
    int main(){
        long long t, a,  b;
        cin>>t>>a>>b;
        if(a == 1 && b == 1 && t == 1){
            printf("inf
    ");
        }else if(t == a && a != b){
            printf("0
    ");
        }else{
            sum(t, a, a, b);
            cout<<ans<<endl;
        }
    }
    View Code
  • 相关阅读:
    Tarjan 的一些板子
    对 SAM 和 PAM 的一点理解
    一些敲可爱的数论板子
    异常
    面向对象编程
    JAVA数组
    JAVA方法
    JAVA流程控制
    JAVA基础
    JAVA入门
  • 原文地址:https://www.cnblogs.com/icodefive/p/4249645.html
Copyright © 2020-2023  润新知