📄 crypt1.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 + -