zoukankan      html  css  js  c++  java
  • 【POJ1177 Pairs of Integers】整数对(无输出方案)

    当N为奇数时:

    若$N $%$ 11 ot = 10$,有一组答案,否则没有。

    当N为偶数时:

    设我们删去了A的第k位(个位为第0位),A前面的部分记为a,删去了b,后面的部分记为c。

    $k=0$时处理方法与奇数相同。

    则有$A=a imes {10}^k imes 10 + b imes {10}^k +c$,

           $B=a imes {10}^k +c$。

    所以$N=A+B=a imes {10}^k imes 11 + b imes {10}^k +2 imes c$,

           $N div {10}^k=a imes 11+ b + lfloor 2 imes c div {10}^k floor$,

           $a=N div {10}^k div 11,b=N div {10}^k$ % $11,c=N $%${10}^k div 2$

    因为c可能进位或不进位,所以,对于每个$k(1le k le lfloor log_{10}^N floor )$,

    要多考虑进位的情况,即$b=b-1,c=(N$ %$ {10}^k +{10}^k) div 2$。

    因为A无前导0,所以要剔除$A=B=0$的情况。

    还要满足:不进位$B le 9$,进位$B ge 0$。

    最后把结果存起来,去重。

    注意:要考虑所有情况和判断条件。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int n,ans[10002],tot,ntot;
    int main()
    {
        cin>>n;
        int fac=1,a,b,c,A,B,flag=n%2||n==10;
        if (flag)
        {
            if (n%11!=10||n==10)
                printf("1
    ");
            else
                printf("0
    ");
            return 0;
        }
        while(fac<=n)
        {
            b=n/fac%11;a=n/fac/11;
            c=(n-(a*11+b)*fac)/2;
            A=fac*(10*a+b)+c;
            B=fac*a+c;
            if ((a+b)&&b<=9&&A!=B&&A+B==n)
            {
                ans[++tot]=A;
            }
            b=n/fac%11-1;a=n/fac/11;
            c=(n-(a*11+b)*fac)/2;
            A=fac*(10*a+b)+c;
            B=fac*a+c;
            if ((a+b)&&b>=0&&A!=B&&A+B==n) ans[++tot]=A;
            fac*=10;
        }
        sort(ans+1,ans+1+tot);
        ntot=unique(ans+1,ans+1+tot)-(ans+1);
        printf("%d
    ",ntot);
        return 0;
    }

     

  • 相关阅读:
    query compiler
    non-deterministic-turing-machine
    What-are-P-NP-NP-complete-and-NP-hard
    查询优化器的算法
    Redis 和 I/O 多路复用
    Linux aio
    MySQL 的那些网络超时错误
    MYSQL performance
    jvmti
    JVM Troubleshooting
  • 原文地址:https://www.cnblogs.com/xzs123456/p/10402408.html
Copyright © 2011-2022 走看看