当前位置:编程学习 > JAVA >>

几道程序设计题目(JAVA)求大神指点

 
1、 对于任给的一个正整数 n ,一定可以分解成若干个不同质数的幂的积, 
n=P1
k1 P2
k2„„pm
km  如:8=23、20=22x5、48=24x3、30=2x3x5,„„ 
 
输入:一个正整数。 
输出:两行正整数,第一行为质数,第二行为质数的幂次。 输入为:30 
则输出:2,  3,  5   
        1,  1,  1   

2.输入包含多行数据,每行数据是一个字符串,格式是“a/boc/d”。其中 a,b,c,d是一个0-9的整数。O是运算符“+”或者“-”。输入数据保证合法 
对于输入数据的每一行输出两个分数的运算结果。注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数 
Sample   Input : 1/8+3/8 1/4-1/2 1/3-1/3 Sample  Output:   1/2    -1/4    0
   
3.小青蛙每个白天可以向上爬m(2<=m<=10)尺,晚上下滑n(1<=n<m)尺。如果告诉你井深h(10<=h<=2000000000)尺,请计算一下,现在,它第几天可以爬上来。 Input  
有三个整数,分别表示 m n h Output 
只有一个整数,表示第几天可以爬上来。 Sample   Input 3 2 10 Sample  Output 8   

4.字母 ABCD分别表示1000,100,10,1,字符串5A9B9C9D表示5*1000+9*100+9*10+9*1. 
要求第一行输入 n,表示输入的字符数组量。从第二行开始,输入n组ABCD字符串,且1要求省略,如1D直接输入D,每组两个字符串。要求输出每组字符的和,而且要保证每组的两个字符和不超过9999  
例如  输入4           输出:     
     CD       C9D          3C     
     B2C2D    4B8C8D       6AC  
     9B9C9D     D          M 
     9A8B7CD  B2C8D        9M9C9X9I   

5.一个整数M,分解成 N个不重复的整数,使得这个N个整数能表示从1到M的所有整数。请编程实现,并要求N最少。例如输入M  40  求的N=4 分别为 1 3 9 27. JAVA 程序设计 算法 --------------------编程问答-------------------- 1.素数表
2.公倍数公约数
3.分析情况,完整天的和不完整的,情况不多,针对头尾,中间都是完整天数
4.字符串处理吧,把字符串看成一个数组从头一个一个来
5.好像是2^n那些数组成的,如果说任意组合的话(可以减法)那我暂时也想不出 --------------------编程问答-------------------- 能给实现的代码不? --------------------编程问答-------------------- 最后一个是什么意思 --------------------编程问答-------------------- 那个我也看不懂,所以请教各位 --------------------编程问答--------------------
引用 3 楼 zishinan 的回复:
最后一个是什么意思

已知数m,求从1到m中选取最少个数的数字,他们的和是m --------------------编程问答-------------------- 第三题
public class FrogClimb
{
    public int getResult(int m,int n,int h)
    {
        int resualt = 0;
        if(m < 2 || m > 10)
        {
            System.out.println("2<=m<=10");
        }
        if(n < 1 || n > m)
        {
            System.out.println("1<=n<m");
        }
        if(h < 10 || h > 2000000000)
        {
            System.out.println("10<=h<=2000000000");
        }
        
        int perDay = m - n;
        while(h - perDay*resualt - m >= 0)
        {
            resualt++;
        }
        return resualt;
    }
    public static void main(String[] args)
    {
        FrogClimb frogClimb = new FrogClimb();
        System.out.println(frogClimb.getResult(4, 2, 10));
    }
}
--------------------编程问答-------------------- 20行处为什么还要减去m --------------------编程问答-------------------- 其实第五题就是n*3吧。。。如果是1,4,7,还是1,3,9能表示的多一些。只是咋证明呢。。数论神马的最难了 --------------------编程问答-------------------- 第3题

public static int getResult(int m, int n, int h) {
return (int) Math.ceil(1.0 * (h - n) / (m - n));
}
--------------------编程问答--------------------
引用 7 楼 u012805640 的回复:
20行处为什么还要减去m
自己动脑筋 --------------------编程问答--------------------
引用 9 楼 zyc13701469860 的回复:
第3题

public static int getResult(int m, int n, int h) {
return (int) Math.ceil(1.0 * (h - n) / (m - n));
}
大神啊!但是对新人不方便理解啊...得写段注释解释算法 --------------------编程问答--------------------
引用 11 楼 zishinan 的回复:
Quote: 引用 9 楼 zyc13701469860 的回复:

第3题

public static int getResult(int m, int n, int h) {
return (int) Math.ceil(1.0 * (h - n) / (m - n));
}
大神啊!但是对新人不方便理解啊...得写段注释解释算法


最后1天爬m尺,其他时间爬m-n尺,所以总时间为(h-m)/(m-n) + 1,由于(h-m)/(m-n)不一定能整除,所以要向上取整,化简下就是结果。 --------------------编程问答--------------------
引用 12 楼 zyc13701469860 的回复:
Quote: 引用 11 楼 zishinan 的回复:

Quote: 引用 9 楼 zyc13701469860 的回复:

第3题

public static int getResult(int m, int n, int h) {
return (int) Math.ceil(1.0 * (h - n) / (m - n));
}
大神啊!但是对新人不方便理解啊...得写段注释解释算法


最后1天爬m尺,其他时间爬m-n尺,所以总时间为(h-m)/(m-n) + 1,由于(h-m)/(m-n)不一定能整除,所以要向上取整,化简下就是结果。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,