题目:
思路:
用i和j代表两个乘数,然后在判断是否出现了两次即可
代码:
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#define mem(a,b) memset(a,b,sizeof(a))
#define N 1000+20
#define inf 0x3f3f3f3f
#define M 1000000+2000
#define LL long long
using namespace std;
int num[100];
int judge(int x)//判断是否超过两次
{
while(x)
{
num[x%10]++;
if(num[x%10]>2)
return 0;
x/=10;
}
return 1;
}
int main()
{
for(int i=100;i<=999;i++)
{
for(int j=100;j<=999;j++)
{
mem(num,0);
int a=i*(j%10);
int b=i*(j/10%10);
int c=i*(j/100%10);
int s=i*j;
if(a>999||b>999||c>999||a<100||b<100||c<100||s>99999||s<10000)
continue;
if(judge(a)&&judge(b)&&judge(c)&&judge(s)&&judge(i)&&judge(j))
printf("%d\n",s);
}
}
return 0;
}