首页 > 代码库 > 暴力穷举
暴力穷举
暴力除法
题目描述
输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的一个排列,2<=n<=79
输入
输入包括多行,每行一个正整数n,2<=n<=79
输出
针对每个输入的n,从小到大输出该表达式,若没有表达式可以生成,则不输出。
样例输入
62
样例输出
79546/01283=62
此题着重考虑时间超限问题,不可以从头至尾依次循环
题目描述
输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的一个排列,2<=n<=79
输入
输入包括多行,每行一个正整数n,2<=n<=79
输出
针对每个输入的n,从小到大输出该表达式,若没有表达式可以生成,则不输出。
样例输入
62
样例输出
79546/01283=62
94736/01528=62
#include<iostream>
#include<string.h>
using
namespace
std;
int
de(
int
m,
int
n)
{
int
x[10];
memset
(x,0,
sizeof
(x));
int
k=0;
while
(m!=0)
{
x[k++]=m%10;
m=m/10;
}
while
(n!=0)
{
x[k++]=n%10;
n=n/10;
}
for
(
int
i=0;i<10;i++)
{
for
(
int
j=i+1;j<10;j++)
{
if
(x[i]==x[j])
return
0;
}
}
return
1;
}
int
main()
{
int
n;
while
(cin>>n)
{
for
(
int
i=01234;i<=98765;i++)
{
int
j=i*n;
if
(j>1000&&j<100000)
{
if
(de(i,j)==1)
//不重复
{
if
(i<10000)
cout<<j<<
‘/‘
<<0<<i<<
‘=‘
<<n<<endl;
else
cout<<j<<
‘/‘
<<i<<
‘=‘
<<n<<endl;
}
}
}
}
return
0;
}
直接找到满足乘积关系的值可以大大缩小运算量,同时需要一个函数来判断是否有重复元素
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。