1,正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12
(1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项。
Java实现:
public static void findNum(int a, int b, int N)
{
int i = 1, j = 1;
while(N > 0)
{
if(a * i <= b * j)
{
System.out.println(a*i);
i++;
}
else
{
System.out.println(b * j);
j++;
}
N--;
}
}
2,有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法 c语言函数原型void proc(char *str) 也可以采用你自己熟悉的语言。
public static void adjustChars(char[] c)
{
int i = 0;
int j = c.length - 1;
while(i <= j)
{
if(c[i] <= 'Z' && c[i] >= 'A')
{
char temp = c[i];
c[i] = c[j];
c[j] = temp;
j--;
}
else
{
i++;
}
}
}
3,给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。
public static int Random5()
{
return (int) (Math.random()*5 + 1);
}
public static int Random7()
{
int a, b;
a = (Random5() - 1) * 5;
b = (Random5() - 1);
if(a + b <= 21)
{
return (a + b) % 7 + 1;
}
else
{
return Random7();
}
}
4,1024! 末尾有多少个0?
public static int find0(int a)
{
int count = 0;
for(int i = 5; i <= a; i ++)
{
int k = i;
if(k % 5 == 0)
{
while(k >= 5)
{
if(k % 5 == 0)
{
count++;
k = k / 5;
}
else
{
break;
}
}
}
}
return count;
}
本文解析了四个算法挑战题目,包括生成特定整数序列、字符串大小写字母重新排序、利用给定随机数生成器生成新的随机数及计算阶乘末尾0的数量。提供了Java语言的实现代码。

被折叠的 条评论
为什么被折叠?



