您的位置:首页 > 编程语言 > Java开发

ACMjava简单枚举除法,分数拆分,双基回文数,最大乘积

2014-04-17 20:13 411 查看
package com.supermars.practice;

import java.io.BufferedInputStream;
import java.util.Scanner;

public class 简单枚举除法 {
static Scanner cin = new Scanner(new BufferedInputStream(System.in));

public static void main(String[] args) {
int n = cin.nextInt();
int Max = 98765;
for (int i = 1234; i < 98765; i++) {
int g = i * n;
if (g > Max)
continue;
if (i < 10000 && noZero(g) == true) {
if (isEqu(g, i)) {
System.out.println(g + "/0" + i + "=" + n);
}
}

}
}

private static boolean noZero(int g) {
char[] x = (g + "").toCharArray();
for (int i = 0; i < x.length; i++) {
if(x[i]=='0') return false;
}
return true;
}

private static boolean isEqu(int g, int i) {
char[] x = (g + "").toCharArray();
char[] y = (i + "").toCharArray();
if (isToken(x) || isToken(y))
return false;

for (int j = 0; j < x.length; j++) {
for (int j2 = 0; j2 < y.length; j2++) {
if (x[j] == y[j2])
return false;
}
}

return true;
}

private static boolean isToken(char[] x) {
for (int j = 0; j < x.length; j++) {
for (int j2 =0; j2 < x.length; j2++) {
if (j!=j2 && x[j]==x[j2])
return true;
}
}
return false;
}
}


--------------------------------

package com.supermars.practice;

import java.io.BufferedInputStream;
import java.util.Scanner;

public class 简单枚举分数拆分 {
static Scanner cin = new Scanner(new BufferedInputStream(System.in));

public static void main(String[] args) {

while (cin.hasNext()) {
double k = cin.nextInt();
double g = 2 * k;
double x = 0;
int cnt = 0;
String s = "";
for (double y = 1; y <= g; y++) {
x = y;
while (x < k * k * k) {
if (k == (x * y) / (y + x)) {
cnt++;
s += ("1/" + (int) k + "=" + "1/" + (int) x + "+"
+ "1/" + (int) y + "\n");
}
x++;
}

}
System.out.println(cnt);
System.out.println(s);

}

}
}


-----------------
package com.supermars.practice;

import java.io.BufferedInputStream;
import java.util.Arrays;
import java.util.Scanner;

public class 简单枚举双基回文数 {
static Scanner cin = new Scanner(new BufferedInputStream(System.in));

public static void main(String[] args) {

loop: while (cin.hasNext()) {
int n = cin.nextInt();
while (true) {
if (isHuiWen(++n) == true) {
System.out.println(n);
continue loop;
}
}
}
}

private static boolean isHuiWen(int n) {
// base 2~8
int cnt = 0;
for (int i = 2; i <= 8; i++) {
String s = baseConvent(i, n);
s = trimBefronZero(s);
char[] sa = s.toCharArray();
int k = 0;
while (sa[k] == sa[sa.length - 1 - k]) {
int mid = (sa.length / 2);
if (k == mid) {
cnt++;
break;
}
k++;
}
if (cnt == 2)
return true;
}
return false;
}

private static String trimBefronZero(String s) {
char sa[] = s.toCharArray();
for (int i = 0; i < sa.length; i++) {
if (sa[i] == '0') {
sa[i] = ' ';
continue;
}
break;
}
String ss = String.valueOf(sa, 0, sa.length).trim();
return ss;
}

private static String baseConvent(int i, int n) {
int s[] = new int[100];
int r = s.length - 1;
while (true) {
int y = i / n;
s[r--] = y;
int t = i % n;
if (t == 0)
break;
}
String str = "";
for (int j = r + 1; j < s.length; j++) {
str += s[j];
}
return str;
}

}


---------------

package com.supermars.practice;

import java.io.BufferedInputStream;
import java.util.Arrays;
import java.util.Scanner;

public class 简单枚举最大乘积 {
final static int MAXN = 1 << 5;
static int A[] = new int[MAXN];
static Scanner cin = new Scanner(new BufferedInputStream(System.in));

public static void main(String[] args) {
while (cin.hasNext()) {
int n = cin.nextInt();
int i = 0;
while (i < n) {
A[i++] = cin.nextInt();
}
long max = 0;
for (int j = 0; j < i; j++) {
for (int j2 = 0; j2 < i; j2++) {
long t = 1;
for (int k = j; k <= j2; k++) {
t *= A[k];
}
if (t > max) {
max = t;
}
}
}
System.out.println(max);

}
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM 算法 java