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的主要内容,如果未能解决你的问题,请参考以下文章

Little Boxes UVALive - 8209

2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)HDU6225.Little Boxes-大数加法

mask-rcnn解读:clip_boxes_graph

Boxes

D. Boxes Packing

POJ 1475 Pushing Boxes