最近在找实习,作为技术渣,一直被虐,不得已只能拼命刷题攒人品,下面是遇到的一些编程题,整理如下,如有雷同,纯属抄袭~
360java语言编程:
数学期望
题目描述:
小明同学最近学习了概率论,他了解到数学期望的定义:设X为一个随机变量,X可以取n种不同的取值x1,x2,x3,…,xn。取x1的概率为p1,取x2的概率为p2,以此类推。定义随机变量X的数学期望为:E[X]=x1*p1+x2*p2+…+xn*pn。
小明回到家中,他想编程计算数学期望,你能帮助他么?
输入
输入第一行一个数n(1<=n<=100),接下来有n行,第i行有两个数xi和pi,xi和pi都是整数,-100<=xi<=100, 0<=pi<=100。表示随机变量X取值为xi的概率是pi/100。输入保证p1+p2+p3+…+pn=100。
输出
输出一个数,随机变量X的数学期望E[x],小数点后四舍五入保留3位。
样例输入
3
0 50
1 20
2 30
样例输出
0.800
代码:
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class wcctest {
public static void main(String[] args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
double sum = 0;
int n = 0;
try {
str = br.readLine().trim();
n = Integer.parseInt(str);
for(int i=0;i<n;i++){
String temp = br.readLine().trim();
int begin = temp.trim().indexOf(" ");
int end = temp.trim().lastIndexOf(" ");
String str1= temp.substring(0, begin);
String str2 = temp.substring(end+1, temp.length());
int a = Integer.parseInt(str1);
int b = Integer.parseInt(str2);
double c = ((double)b/100);
sum += a*c;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sum);
}
}
偶串
时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
一个字符串S是偶串当且仅当S中的每一个字符都出现了偶数次。如字符串”aabccb”是一个偶串,因为字符a,b,c都出现了两次。而字符串”abbcc”不是偶串,因为字符a出现了一次。
现在给出一个长度为n的字符串T=t1,t2,t3,…,tn。字符串的子串为其中任意连续一段。T长度为1的子串有n个,长度为2的子串有n-1个,以此类推,T一共有n(n+1)/2个子串。给定T,你能算出它有多少个子串是偶串吗?
输入
输入一个字符串T,T中只有小写字母。T的长度不超过100000。
输出
输出一个数,T的所有子串中偶串的个数。
样例输入
abbc
样例输出
1
代码:
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class wcctest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try {
str = br.readLine().trim();
int sum = GetEvenStringSum(str);
System.out.print("\n"+sum);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static int GetEvenStringSum(String str) {
// TODO Auto-generated method stub
int count = 0;
for(int i = 0;i<str.length();i++)
for(int j=0;j+i<str.length();j++)
{
int sublen = i+1;
String subString = str.substring(j,j+sublen);
if(isEvenString(subString))
count++;
}
return count;
}
public static boolean isEvenString(String str)
{
boolean ret = true;
char[] arr = str.toCharArray();//String.toCharArray 方法 ,作用:将字符串转换为字符数组。
HashSet<Character> set = new HashSet<Character>();
Map<Character,Integer> map = new HashMap<Character,Integer>();
for(char c:arr)
{
if (!set.contains(c)) {
set.add(c);
map.put(c, 1);
}else
{
map.put(c, map.get(c)+1);
}
}
Iterator ite = map.entrySet().iterator();
while(ite.hasNext())
{
Map.Entry<Character,Integer> entry = (Entry<Character, Integer>) ite.next();
int num = entry.getValue();
if(num%2!=0)
{
ret = false;
break;
}
}
return ret;
}
}
华为编程模拟题:
a+b
描述:计算a+b的和
每行包括两个整数a和b
对于每行输入对应输出一行a和b的和
输入
1 5
输出
6
代码:
package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class wcctest { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; try { str = br.readLine().trim(); int begin = str.trim().indexOf(" "); int end = str.trim().lastIndexOf(" "); String str1= str.substring(0, begin); String str2 = str.substring(end+1, str.length()); int a = Integer.parseInt(str1); int b = Integer.parseInt(str2); System.out.print(a+b); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }