Little Boxes
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Little Boxes相关的知识,希望对你有一定的参考价值。
可以用高精度做。如果会Java也可以直接用大整数。
这里记录一下队友的神奇想法:
abcd之和最大值为264,而ull最大为264-1,所以可以先-1,用ull做加法,再+1;
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define pb push_back
#define fi first
#define se second
#define mem(a,x) memset(a,x,sizeof(a));
#define db double
#define fir(i,a,n) for(int i=a;i<=n;i++)
#define debug(x) cout<<#x<<" "<<x<<endl;
const int inf=0x3f3f3f3f;
const int MOD=1e9+7;
//======================
const int N=2e5+10;
string anss;
string ulltostring(ull a)
{
string ans;
while(a)
{
ans+=(a%10)+'0';
a/=10;
}
string ans1;
for(int i=ans.size()-1;i>=0;i--)
{
ans1+=ans[i];
}
return ans1;
}
int main()
{
int t;
cin>>t;
while(t--)
{
ull a,b,c,d;cin>>a>>b>>c>>d;
int flag=0;
if(a)
{
a-=1;flag++;
}
else if(b)
{
b-=1;flag++;
}
else if(c)
{
c-=1;flag++;
}
else if(d)
{
d-=1;flag++;
}
if(!flag)
{
cout<<0<<endl;continue;
}
ull ans=a+b+c+d;
string temp=ulltostring(ans);
//+1
int flag1=0;
for(int i=temp.size()-1;i>=0;i--)
{
if(temp[i]<='8'&&temp[i]>='0')
{
temp[i]++;flag1++;
temp[i+1]='0';
break;
}
}
if(!flag1)//没加到 只可能是全都是9
{
int len=temp.size();//有len个9
temp="1";
for(int i=0;i<len;i++)
{
temp+="0";
}
}
cout<<temp<<endl;
}
return 0;
}
以上是关于Little Boxes的主要内容,如果未能解决你的问题,请参考以下文章