几道程序设计题目(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那些数组成的,如果说任意组合的话(可以减法)那我暂时也想不出 --------------------编程问答-------------------- 能给实现的代码不? --------------------编程问答-------------------- 最后一个是什么意思 --------------------编程问答-------------------- 那个我也看不懂,所以请教各位 --------------------编程问答--------------------
已知数m,求从1到m中选取最少个数的数字,他们的和是m --------------------编程问答-------------------- 第三题
public class FrogClimb--------------------编程问答-------------------- 20行处为什么还要减去m --------------------编程问答-------------------- 其实第五题就是n*3吧。。。如果是1,4,7,还是1,3,9能表示的多一些。只是咋证明呢。。数论神马的最难了 --------------------编程问答-------------------- 第3题
{
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));
}
}
--------------------编程问答-------------------- 自己动脑筋 --------------------编程问答-------------------- 大神啊!但是对新人不方便理解啊...得写段注释解释算法 --------------------编程问答--------------------
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)不一定能整除,所以要向上取整,化简下就是结果。 --------------------编程问答--------------------
大神啊!但是对新人不方便理解啊...得写段注释解释算法
第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