| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 963 人关注过本帖
标题:JAVA每周一题(4)-----数学黑洞
只看楼主 加入收藏
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
结帖率:90.32%
收藏
已结贴  问题点数:20 回复次数:1 
JAVA每周一题(4)-----数学黑洞
任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
    1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
    2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);
    3)求两个数的差,得到一个新的四位数(高位零保留)。
    重复以上过程,最后得到的结果是6174,这个数被称为卡布列克数
 例如:如4312

4321-1234=3087

8730-378=8352

8532-2358=6174

一共3步

请你写一个程序,计算一个四位数经过上述运算最后得到卡布列克数所需的步数。
搜索更多相关主题的帖子: JAVA 黑洞 数学 
2010-07-08 08:55
ljwei
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:46
专家分:192
注 册:2009-9-18
收藏
得分:20 
程序代码:
import java.util.Scanner;

public class kabulieke
{
    public static void main(String[] args)
    {
    int i,x,y,a,b,c,d,flag=1,temp;
    Scanner scan=new Scanner(System.in);
   
    System.out.print("请输入一个常数(各个位上的数字互异): ");
    x=scan.nextInt();

    for(i=0;flag>0;i++)
        {
        a=x/1000;         b=(x-a*1000)/100;
        c=(x-a*1000-b*100)/10;     d=x%10;
        if(a<b){temp=a;a=b;b=temp;}//各个位上的数字排序
        if(a<c){temp=a;a=c;c=temp;}
        if(a<d){temp=a;a=d;d=temp;}
        if(b<c){temp=b;b=c;c=temp;}
        if(b<d){temp=b;b=d;d=temp;}
        if(c<d){temp=c;c=d;d=temp;}

        x=a*1000+b*100+c*10+d;    //四个数字构成最大的四位数->x

        if(d>0)y=d*1000+c*100+b*10+a;//四个数字构成最小的四位数->y
        else     y=c*100+b*10+a;

        x=x-y;
        if(x==6174)flag=0;    //结束标志   
        }
    System.out.println("卡布列克数为: "+i);
    }
}
让各位见笑啦......
2010-07-08 16:20
快速回复:JAVA每周一题(4)-----数学黑洞
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016217 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved