⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crypt1.cpp

📁 USACO chapter one.May hope it useful to someone
💻 CPP
字号:
/*
ID: chenkai4
PROG: crypt1
LANG: C++
*/
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("crypt1.in");
ofstream out("crypt1.out");
#define MAXARRAY 100
bool hash[10]={0};

struct _int
{
	int l,b[MAXARRAY];
	_int(int n=0)
	{
		l=0;memset(b,0,sizeof(b));
		while(n)
		{
			b[l++]=n%10;
			n/=10;
			if(b[l])l++;
		}
	}
	_int& carry()
	{
		for(int a=0;a<l;a++)
		{
			b[a+1]+=b[a]/10;
			b[a]%=10;
			if(b[l])l++;
		}
		return *this;
	}
};

const _int operator+(const _int i1,const _int i2)
{
	_int ret;
	ret.l = max(i1.l,i2.l);
	for(int a=0;a<ret.l;a++)
	{ret.b[a]=i1.b[a]+i2.b[a];}
	return ret.carry();
}
const _int operator*(const _int i1,const _int i2)
{
	_int ret;
	if(i1.l==0||i2.l==0) return ret;
	ret.l = i1.l + i2.l -1;
	for(int a=0;a<max(i1.l,i2.l);a++)
		for(int b=0;b<min(i1.l,i2.l);b++)
			if(i1.l>i2.l)
				ret.b[a+b]+=i1.b[a]*i2.b[b];
			else
				ret.b[a+b]+=i2.b[a]*i1.b[b];
	return ret.carry();
}

int main()
{
	int n,t,answer=0;
	in>>n;
	for(int a=1;a<=n;a++)
	{in>>t;hash[t]=true;}
	for(int a=1;a<=9;a++)
		if(hash[a])
			for(int b=1;b<=9;b++)
				if(hash[b])
					for(int c=1;c<=9;c++)
						if(hash[c])
							for(int d=1;d<=9;d++)
								if(hash[d])
									for(int e=1;e<=9;e++)
										if(hash[e])
										{
											_int num1,num3,num4;
											num1=a*100+b*10+c;
											num3=e*num1;
											if(num3.l!=3)
												continue;
											int f;
											for(f=1;f<=num3.l;f++)
												if(!hash[num3.b[f-1]])
													break;
											if(f==num3.l+1)
											{
												num4=d*num1;
												if(num4.l!=3)
													continue;
												for(f=1;f<=num4.l;f++)
													if(!hash[num4.b[f-1]])
														break;
												if(f==num4.l+1)
												{
													num1=num3+num4*10;
													if(num1.l!=4)
														continue;
													for(f=1;f<=num1.l;f++)
														if(!hash[num1.b[f-1]])
															break;
													if(f==num1.l+1)
														answer++;
												}
											}


										}
	out<<answer<<endl;
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -