3、6174问题

描述

假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数

比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4

import java.util.Arrays;

public class ACM6174 {

public static void main(String[] args) {
int x=1234;
int count=0;
while(x!=6174){
x=jianfa(x);
count++;
}
System.out.println(count+1);
}

public static int jianfa(int a){
int b=congdadaoxiao(a)-congxiaodaoda(a);
return b;
}
public static int congdadaoxiao(int a){
String str=a+"";
int[] in=new int[str.length()];
for(int i=0;i<str.length();i++){
char ch=str.charAt(i);
in[i]=Integer.parseInt(ch+"");
}
Arrays.sort(in);
String st="";
for(int i=0;i<in.length;i++){
st=st+in[i];
}
String s="";
for(int i=st.length()-1;i>=0;i--){
char ch=st.charAt(i);
s=s+ch;
}
int b=Integer.parseInt(s);
return b;
}
public static int congxiaodaoda(int a){
String str=a+"";
int[] in=new int[str.length()];
for(int i=0;i<str.length();i++){
char ch=str.charAt(i);
in[i]=Integer.parseInt(ch+"");
}
Arrays.sort(in);
String st="";
for(int i=0;i<in.length;i++){
st=st+in[i];
}
int b=Integer.parseInt(st);
return b;
}
}

2、另一种阶乘问题

描述

大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在我们引入一种新的阶乘概念,将原来的每个数相乘变为i不大于n的所有奇数相乘例如:5!!=1*3*5.现在明白现在这种阶乘的意思了吧!

现在你的任务是求出1!!+2!!......+n!!的正确值(n<=20)

输入

第一行输入一个a(a<=20),代表共有a组测试数据

接下来a行各行输入一个n.

输出

各行输出结果一个整数R表示1!!+2!!......+n!!的正确值

public class Demo1 {

public static void main(String[] args) {
int n=5;
System.out.println(method(n));

}
public static int method(int n){
int sum=0;
for(int i=1;i<=n;i++){
sum+=method1(i);
}
return sum;
}
public static int method1(int n){
int sum=1;
for(int i=1;i<=n;i++){
if(i%2==1){
sum*=i;
}
}
return sum;
}
}

1、韩信点兵

描述相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。

解法一:

method(2,3,4);

public static void method(int a,int b,int c){
for(int i=10;i<=100;i++){
if(i%3==a&&i%5==b&&i%7==c){
System.out.println(i);
}
}
}

扩展二:

public class Demo1 {
public static void main(String[] args) {
//System.out.println(ChooseOne.getRandom()+" -> 将完成此道题目。");

String str=aA(2,1,6); //方法调用
str=str.substring(0, str.length()-1); //字符串截取,去掉最后一个逗号
System.out.println("总共有士兵数:"+str);
}

//韩信点兵
public static String aA(int a,int b,int c){
String s="";
for(int x=10;x<=1000;x++){ //遍历10道100之间的整数
if(x%3==a && x%5==b && x%7==c){ //如果3人一排余a,并且5人一排余b,并且7人一排余c
s+=x+",";
}
}
if(!s.equals("")){
return s;
}
return "No answer";
}
}

ACM 韩信点兵 、n的另一种阶乘、6174的问题的更多相关文章

  1. java练手 韩信点兵

    Problem C 韩信点兵 时间限制:3000 ms  |  内存限制:65535 KB   描述 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队 ...

  2. 18.12.02-C语言练习:韩信点兵

    C语言练习:韩信点兵 题目说明:本题是中国经典问题,有多种解法,从数论课程角度看,是一个不定方程组,而且答案不唯一. 但这里采用程序解法,使用的是暴力破解.枚举可能的解,然后根据条件判断,满足所有条件 ...

  3. [C++]2-2 韩信点兵

    /* 韩信点兵 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队 形,而他每次只掠一眼队伍的排尾就知道总人数了.输入多组数据,每组数据包含3个非负整数 ...

  4. YTU 2677: 韩信点兵

    2677: 韩信点兵 时间限制: 1 Sec  内存限制: 128 MB 提交: 61  解决: 38 题目描述 刘邦问韩信:"你觉得我可以带兵多少?"韩信:"最多十万. ...

  5. cogs——1786. 韩信点兵

    1786. 韩信点兵 ★★★   输入文件:HanXin.in   输出文件:HanXin.out   简单对比 时间限制:1 s   内存限制:256 MB [题目描述] 韩信是中国军事思想“谋战” ...

  6. hdu acm 1166 敌兵布阵 (线段树)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. COGS 1786. 韩信点兵

    ★★★   输入文件:HanXin.in   输出文件:HanXin.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 韩信是中国军事思想“谋战”派代表人物,被后人奉为“ ...

  8. COGS——T 1786. 韩信点兵

    http://www.cogs.pro/cogs/problem/problem.php?pid=1786 ★★★   输入文件:HanXin.in   输出文件:HanXin.out   简单对比时 ...

  9. NYOJ题目34韩信点兵

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAskAAAHiCAIAAACV1MbSAAAgAElEQVR4nO3dPXLjONeG4W8TyrUQx1 ...

随机推荐

  1. socket_udp客户端循环输入

    server--------------#!/usr/bin/env python # encoding: utf-8  # Date: 2018/6/7 from socket import * s ...

  2. 两栏自适应布局,右侧div宽高不定

    .main,.sitebar{       height: 300px;       font: bolder 20px/300px "微软雅黑";       color: bl ...

  3. 深入浅出 Java Concurrency (14): 锁机制 part 9 读写锁 (ReentrantReadWriteLock) (2)

      这一节主要是谈谈读写锁的实现. 上一节中提到,ReadWriteLock看起来有两个锁:readLock/writeLock.如果真的是两个锁的话,它们之间又是如何相互影响的呢? 事实上在Reen ...

  4. python开发_python中的变量:全局变量和局部变量

    如果你在为python中的变量:全局变量和局部变量头疼,我想这篇blog会给你帮助 运行效果: 代码部分: #Python中的变量:全局变量和局部变量 #在很多语言中,在声明全局变量的时候,都喜欢把全 ...

  5. 初始mysql语句

    操作文件夹(库) 增 : create database db1 charset utf8; 查 : #查看当前创建的数据库 show create database db1; #查看所有的数据库 s ...

  6. fileinput模块可以循环一个或多个文本文件的内容

    fileinput模块可以循环一个或多个文本文件的内容. [默认格式] fileinput.input (files=None, inplace=False, backup='', bufsize=0 ...

  7. Server_id 冲突导致 IO 等待故障

    问题描述: 线上添加新的 MySQL Slave 后,服务器异常. 1.show processlist; Queueing master event to the relay log Reconne ...

  8. C++ new到底new什么

    VS2010-Debug版本 9: int *obj = new int(6); 00F714CE push //压栈 00F714D0 call operator new (0F711EAh) // ...

  9. java核心知识点 --- 线程池ThreadPool

    线程池是多线程学习中需要重点掌握的. 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统交互.在这种情形下,使用线程池可以很好的提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考 ...

  10. flask 启动

    export SECRET_KEY=qq77aa88 export MAIL_SERVER=smtp.qq.com export MAIL_USERNAME=591867837@qq.com expo ...