除法

输入正整数n,按从小到大的顺序输出所有形如abcde/fghij = n的表达式,其中a~j恰好
为数字0~9的一个排列(可以有前导0),2≤n≤79。
样例输入:
62
样例输出:
79546 / 01283 = 62
94736 / 01528 = 62


思路:枚举0~9的所有排列?没这个必要。 只需要枚举fghij就可以算出abcde,然后判断是否
所有数字都不相同即可。 不仅程序简单,而且枚举量也从10!=3628800降低至不到1万,而且
当abcde和fghij加起来超过10位时可以终止枚举。 由此可见,即使采用暴力枚举,也是需要认

真分析问题的。


package ppt;


import java.util.Scanner;


public class Demo6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for(int i=0;i<=9;i++)
{
for(int j=0;j<=9;j++)
{
if(i==j)
{
continue;
}
for(int k=0;k<=9;k++)
{
if(k==i||k==j)
{
continue;
}
for(int a=0;a<=9;a++)
{
if(a==i||a==j||a==k)
{
continue;
}
for(int b=0;b<=9;b++)
{
if(b==i||b==j||b==k||b==a)
{
continue;
}
for(int c=0;c<=9;c++)
{
if(c==i||c==j||c==k||c==a||c==b)
{
continue;
}
for(int d=0;d<=9;d++)
{
if(d==i||d==j||d==k||d==a||d==b||d==c)
{
continue;
}
for(int e=0;e<=9;e++)
{
if(e==i||e==j||e==k||e==a||a==b||e==c||e==d)
{
continue;
}
for(int f=0;f<=9;f++)
{
if(f==i||f==j||f==k||f==a||f==b||f==c||f==d||f==e)
{
continue;
}
for(int g=0;g<=9;g++)
{
if(g==i||g==j||g==k||g==a||g==b||g==c||g==d||g==e||g==f)
{
continue;
}
double a1 = i*10000+j*1000+k*100+a*10+b;
double a2 = c*10000+d*1000+e*100+f*10+g;
if(a1/a2==num)
{
if((int)a2<10000)
{
System.out.println((int)a1+" / 0"+(int)a2+" = 62");
}
else
{
System.out.println((int)a1+" / "+(int)a2+" = 62");
}
}
}
}
}
}
}
}
}
}
}
}
}






}

题主并没有按照题目要求去使用简便算法,因为这道题本身不难,运算量也不大,不是特别需要简便方法,

这种方法最暴力,最简单,最易懂,

其实我是我没有看懂老师给的答案,所以只能自己去写的,enmmmmm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值