• 【BZOJ2056】gift? 高精度?


    2056: gift? 高精度?

    Time Limit: 10 Sec  Memory Limit: 1 MB
    Submit: 1302  Solved: 413
    [Submit][Status][Discuss]

    Description

     

    Input

    输入的第一行为一个整数t。 接下来t行,每行包含九个自然数。

    Output

    输出t行 每行一个整数,表示2^a+2^b+2^c+2^d+2^e+2^f+2^g+2^h+i。

    Sample Input

    1
    21 30 0 0 0 0 0 0 2147483647

    Sample Output

    3223322629
    【数据规模】
    40% t<=1000
    100% t<=100000 a,b,c,d,e,f,g,h<=60 i<=9223372036854775808

    HINT

     

    Source

    日常被题目吸引

    本来都要写高精了看到了1M内存限制 呵呵

    然后我算了一下 ull极限到(2^64)-1 极限数据刚好比这个数大1

    特判掉 OK

    乱搞能力++

    /*To The End Of The Galaxy*/
    #include<cstdio>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long ull;
    int a,b,c,d,e,f,g,h;
    ull ans;
    ull tmp;
    ull i;
    #define rep(x,y,z) for(int i=(x);i<=(y);i+=(z))
    int main()
    {
        int cas;
        ull com=((ull)9223372036*(ull)1000000000)+(ull)854775808;
        scanf("%d",&cas);
        while(cas--)
        {
            ans=0;
            scanf("%d%d%d%d%d%d%d%d%llu",&a,&b,&c,&d,&e,&f,&g,&h,&i);
            if(a==60&&b==60&&c==60&&d==60&&e==60&&f==60&&g==60&&h==60&&i==com)
            {
                printf("18446744073709551616
    ");
            }
            else
            {
                tmp=1;
                ans+=(ull)i;
                rep(1,a,1)
                {
                    tmp*=(ull)2;
                }
                ans+=tmp;tmp=1;
                rep(1,b,1)
                {
                    tmp*=(ull)2;
                }
                ans+=tmp;tmp=1;
                rep(1,c,1)
                {
                    tmp*=(ull)2;
                }
                ans+=tmp;tmp=1;
                rep(1,d,1)
                {
                    tmp*=(ull)2;
                }
                ans+=tmp;tmp=1;
                rep(1,e,1)
                {
                    tmp*=(ull)2;
                }
                ans+=tmp;tmp=1;
                rep(1,f,1)
                {
                    tmp*=(ull)2;
                }
                ans+=tmp;tmp=1;
                rep(1,g,1)
                {
                    tmp*=(ull)2;
                }
                ans+=tmp;tmp=1;
                rep(1,h,1)
                {
                    tmp*=(ull)2;
                }
                ans+=tmp;tmp=1;
                printf("%llu
    ",ans);
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    【转载】Linux的进程间通信-信号量
    【转载】高性能数据库连接池的内幕
    【转载】我是一块硬盘(下)
    【转载】我是一块硬盘(上)
    69. Sqrt(x)
    68. Text Justification
    67. Add Binary
    66. Plus One
    65. Valid Number
    64. Minimum Path Sum
  • 原文地址:https://www.cnblogs.com/redwind/p/6510542.html
Copyright © 2020-2023  润新知