G 织女的红线(SDUT 2240)
import java.util.Scanner;import java.text.DecimalFormat;class Sum { double x1, y1, x2, y2; Sum(double n1, double m1, double n2, double m2) { x1 = n1; x2 = n2; y1 = m1; y2 = m2; } double getAns() { double ans = 0; ans = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); ans = Math.sqrt(ans); return ans; }}public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); DecimalFormat df = new DecimalFormat(".00"); int t, r; double ans = 0; double x[] = new double[200]; double y[] = new double[200]; t = sc.nextInt(); r = sc.nextInt(); for (int i = 1; i <= t; i++) { x[i] = sc.nextDouble(); y[i] = sc.nextDouble(); } x[t + 1] = x[1]; y[t + 1] = y[1]; Sum p; for (int i = 1; i <= t; i++) { p = new Sum(x[i], y[i], x[i + 1], y[i + 1]); ans += p.getAns(); } ans += 2 * r * 3.1415926; System.out.println(df.format(ans)); }}
H 分数加减法(SDUT 2253)
import java.util.Scanner;import java.text.DecimalFormat;class Sum { int x1, y1, x2, y2; char str; Sum(int n1, int m1, int n2, int m2, char op) { x1 = n1; x2 = n2; y1 = m1; y2 = m2; str = op; } int getGcd(int a, int b) { int n = a, m = b; while (m > 0) { int x = n; n = m; m = x % m; } return n; } void getAns() { int x = getGcd(y1, y2); int a, b, c, d, ans1, ans2; a = x1; b = y1; c = x2; d = y2; int lcm = b * d / x; a = a * d / x; c = c * b / x; if (str == '+') ans1 = a + c; else ans1 = a - c; ans2 = lcm; if (ans1 < 0) x = -ans1; else x = ans1; x = getGcd(x, ans2); if (ans1 % x == 0 && ans2 % x == 0) { ans1 /= x; ans2 /= x; } if (ans1 == 0 && ans1 != ans2 || ans2 == 1) System.out.println(ans1); else if (ans1 == ans2) System.out.println(1); else System.out.println(ans1 + "/" + ans2); }}public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // DecimalFormat df = new DecimalFormat(".00"); Sum p; String s; char op; while (sc.hasNext()) { s = sc.next(); // System.out.println(s); int x1 = s.charAt(0) - '0'; int y1 = s.charAt(2) - '0'; op = s.charAt(3); int x2 = s.charAt(4) - '0'; int y2 = s.charAt(6) - '0'; // System.out.println(x1 + " " + y1 + " " + x2 + " " + y2 + " " + op); p = new Sum(x1, y1, x2, y2, op); p.getAns(); } }}
高中数学?(SDUT 2400)
import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); for (int i = 0; i < t; i++) { int n = sc.nextInt(); Sum p = new Sum(n); int ans = p.getAns(n); System.out.println(ans); } sc.close(); }}class Sum { int a[] = new int[55]; int n; public Sum(int n) { a[1] = 0; a[2] = 1; for (int i = 3; i <= 50; i++) { a[i] = 4 * a[i - 1] - 5 * a[i - 2]; } this.n = n; } public int getAns(int n) { return a[n]; }}
最大矩形面积(SDUT 2401)
import java.lang.reflect.Array;import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int n,l,w; node s[] = new node[2000]; for (int i = 0; i < t; i++) { l = sc.nextInt(); w = sc.nextInt(); n = sc.nextInt(); for(int j = 0; j < n; j ++) { s[j] = new node(); s[j].x = sc.nextInt(); s[j].y = sc.nextInt(); } //Arrays.sort(s,0,n,new cmp()); Sum p = new Sum(l,w,n,s); if(n == 0) System.out.println(l * w); else System.out.println(p.getAns()); } sc.close(); }}class node{ int x; int y;}class cmp implements Comparator{ public int compare(node a, node b) { if(a.x - b.x != 0) return a.x - b.x; else return a.y - b.y; }}class cmp1 implements Comparator { public int compare(node a, node b) { if(a.y - b.y != 0) return a.y - b.y; else return a.x - b.x; }}class Sum { int l,w,n; node s[] = new node[2000]; Sum(int l, int w, int n, node s[]) { this.l = l; this.w = w; this.n = n; this.s = s; } int max(int a, int b) { if(a >= b) return a; else return b; } int min(int a, int b) { if(a >= b) return b; else return a; } int getAns1() { Arrays.sort(s,0,n,new cmp1()); int i,j,ans1; ans1 = 0; for (i = 0; i < n; ++i) { int L = 0, R = l; for (j = i + 1; j < n; ++j) { if (s[i].y != s[j].y) { ans1 = max(ans1,(s[j].y - s[i].y)*(R - L)); if (s[j].x > s[i].x) R = min(R,s[j].x); else L = max(L,s[j].x); } } } return ans1; } int getAns2() { Arrays.sort(s,0,n,new cmp()); int i,j,ans2; ans2 = 0; for (i = 0; i < n; ++i) { int top = w, down = 0; for (j = i + 1; j < n; ++j) { if (s[i].x != s[j].x) { ans2 = max(ans2,(s[j].x - s[i].x)*(top - down)); if (s[j].y > s[i].y) top = min(top,s[j].y); else down = max(down,s[j].y); } } } return ans2; } int getAns() { int ans,ans1,ans2; ans1 = getAns1(); ans2 = getAns2(); ans = max(ans1,ans2); return ans; }}