【BZOJ2056】gift? 高精度?
2056: gift? 高精度?
Time Limit: 10 Sec Memory Limit: 1 MBSubmit: 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
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
【数据规模】
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
乱搞能力++
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/*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\n"); } 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\n",ans); } } return 0; }