zoukankan      html  css  js  c++  java
  • 【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
  • 相关阅读:
    ASP.NET 设计模式 读书摘记1
    [Exception]Sys.WebForm.PageRequestManagerServerErrorException:500
    [Exception] 当前 TransactionScope 已完成
    [Javascript]客户端检测
    c.Tom and paper
    Currency System in Geraldion (Codeforces 560A)
    巡逻机器人(BFS)
    比赛建金字塔问题解题报告
    除法(暴力)
    比赛找丢失的数解题报告T
  • 原文地址:https://www.cnblogs.com/redwind/p/6510542.html
Copyright © 2011-2022 走看看