第一题:字符串转整数
将一个字符串转换成一个整数,数值为0或者是字符串等不是一个合法的数值则返回0,小数直接取整数部分。要求:不能使用字符串转换整数的库函数
输入
字符串
输出
整数
样例输入
0360
样例输出
360
第二题:整理彩球
小明家有一些彩球,一段时间后小明玩耍时将它们无序的散落在家中,一天,小明想对其进行整理,规则为一个篮子中只放一种颜色彩球,可有多个篮子放同一颜色的球,每个篮子里的球不少于2个。假设小明整理好后,能使各篮子中彩球数量使相同的,则认为小明整理好了。用一个数字表示一种颜色彩球,一组数表示小明已经找到了的彩球,问小明用找到的全部彩球能按规则整理好么?
输入
第一行彩球总数:n, 2<n<10000
第二行一段整数ai,1<ai<10000(排除ai全部相等的情况)
输出
若能整理好,最小篮子数;否则0
样例输入
6
1 1 2 2 2 2
样例输出
3
public class num2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = 0;
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
int ball = in.nextInt();
if (map.get(ball) == null){
map.put(ball,1);
m++;
}
else {
map.put(ball,map.get(ball) + 1);
}
}
int i = 0;
int[] numbers = new int[m];
for (Integer value:map.values()) {
numbers[i++] = value;
}
int gys = findgys(numbers[0],numbers[1]);
i = 2;
if (gys < 2){
System.out.println(0);
}
else{
while (i < m){
gys = findgys(gys,numbers[i]);
if (gys < 2){
System.out.println(0);
break;
}
i++;
}
if (gys > 1){
int ans = 0;
for (int j = 0; j < m; j++) {
ans += numbers[j] / gys;
}
System.out.println(ans);
}
}
}
private static int findgys(int m, int n) {
if (m < n) {
int temp = m;
m = n;
n = temp;
}
while (m % n != 0) {
int temp = m % n;
m = n;
n = temp;
}
return n;
}
}