一、正则表达式的运算(考试的时候可以查apk)
java中提供了对正则表达式的支持。
有的时候,恰当地使用正则,可以让我们的工作事半功倍!
如下代码用来检验一个四则运算式中数据项的数目,请填写划线部分缺少的代码。
注意:只填写缺少代码,不要写任何多余内容,例如,已有的双引号。
public class A
{
public static int f(String s)
{
return s.split("________________").length;
}
public static void main(String[] args)
{
System.out.println(f("12+35*5-2*18/9-3")); //7
System.out.println(f("354*12+3-14/7*6")); //6
}
}
所以答案为:
package s_1;
public class Main
/*
* java中提供了对正则表达式的支持。
* 有的时候,恰当地使用正则,可以让我们的工作事半功倍!
* 如下代码用来检验一个四则运算式中数据项的数目,请填写划线部分缺少的代码。
* 注意:只填写缺少代码,不要写任何多余内容,例如,已有的双引号。
*/
{
public static int f(String s)
{
// return s.split("\\+|\\-|\\*|\\/").length;
// String类的函数返回的是一个字符串数组,只需要统计他的长度即可,即可求出四则运算中的数据项的数目。
return s.split("[^0-9]").length;
}
public static void main(String[] args)
{
System.out.println(f("12+35*5-2*18/9-3")); //7
System.out.println(f("354*12+3-14/7*6")); //6
}
}
二、采用暴力法进行求解,一个很大的数进行枚举即可出结果。
1/1 + 1/2 + 1/3 + 1/4 + ... 在数学上称为调和级数。
它是发散的,也就是说,只要加上足够多的项,就可以得到任意大的数字。
但是,它发散的很慢:
前1项和达到 1.0
前4项和才超过 2.0
前83项的和才超过 5.0
那么,请你计算一下,要加多少项,才能使得和达到或超过 15.0 呢?
请填写这个整数。
注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。
通过该程序可知,int类型的整数的最大值为:2147483647
代码如下:
package s_2;
public class Main {
/*
* 答案为1835421.
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double sum=0;
for(int i=1;i<=100000000;i++){
sum+=1.0/i;
if(sum>=15.0){
System.out.print(i);
break;
}
`
}
}
}
三、
如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗?
显然,这个值是介于2和3之间的一个数字。
请把x的值计算到小数后6位(四舍五入),并填写这个小数值。
注意:只填写一个小数,不要写任何多余的符号或说明。
package s_3;
public class Main {
/**
* 答案为:2.506184
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(double x=2.5;;x+=0.00000001){
//System.out.println(x);
if((10-Math.pow(x,x))<0.0000001){
System.out.print(String.format("%.6f",x));
break;
}
}
}
}
四、
今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。
要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:
17126425374635
当然,如果把它倒过来,也是符合要求的。
请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。
注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。
在使用普通的全排列方法后发现一直超时,后来发现使用数学方法反而更加简便!!!
五、对于统计个数的题,一定要输出,看看有没有重复的。
勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形。
已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。
求满足这个条件的不同直角三角形的个数。
【数据格式】
输入一个整数 n (0<n<10000000) 表示直角三角形斜边的长度。
要求输出一个整数,表示满足条件的直角三角形个数。
例如,输入:
5
程序应该输出:
1
再例如,输入:
100
程序应该输出:
2
再例如,输入:
3
程序应该输出:
0
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
代码如下:
package s_5;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
int sum=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i*i+j*j==n*n){
System.out.println(i+":"+j);
sum++;
}
}
}
System.out.print(sum/2);
}
}