USACO部分试题答案1.2.4;1.2.5;1.3.1

package Karl.Water;



/*

LANG: JAVA

PROG: dualpal

*/





import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.StringTokenizer;



public class dualpal {

	public static void main(String[] args) throws IOException {

		BufferedReader in = new BufferedReader(new FileReader("dualpal.in"));

		PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("dualpal.out")), true);

		StringTokenizer st = new StringTokenizer(in.readLine());

		int N = Integer.parseInt(st.nextToken());

		int S = Integer.parseInt(st.nextToken());

		do {

			if (dualPal(++S)) {

				out.println(S);

				if (--N == 0)

					break;

			}

		} while (S != Integer.MAX_VALUE);

		System.exit(0);

	}



	private static char digitToChar(int digit) {

		return (char) (digit + '0');

	}



	private static boolean dualPal(int num) {

		int count = 0;

		int base = 2;

		do {

			if (isPal(toBaseForm(num, base))) {

				if (++count >= 2)

					return true;

			}

		} while (++base <= 10);

		return false;

	}



	private static String toBaseForm(int num, int base) {

		StringBuilder sb = new StringBuilder();

		do {

			char curChar = digitToChar(num % base);

			sb.append(curChar);

		} while ((num /= base) != 0);

		sb.reverse();

		return sb.toString();

	}



	private static boolean isPal(String s) {

		int low = 0, high = s.length() - 1;

		while (low < high) {

			if (s.charAt(low) != s.charAt(high))

				return false;

			low++;

			high--;

		}

		return true;

	}

}



第二题

package Karl.Water;



/*

LANG: JAVA

TASK: palsquare

*/



import java.io.BufferedReader;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;



public class palsquare {

	static char[] a ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K'};

	public static boolean judgehuiwen(String s){

		for(int i=0;i<s.length()/2;i++){

			if(s.charAt(i)!=s.charAt(s.length()-1-i))

				return false;

		}

		return true;

	}

	public static String judge(Integer i,Integer j){

		if(i/j==0){

			return String.valueOf(a[i%j]);

		}else{

			return judge(i/j,j)+String.valueOf(a[i%j]);

		}

	}

	public static void judgepingfang(int j) throws IOException{

		PrintWriter pw = new PrintWriter (new FileWriter("palsquare.out"));

		for(int i=1;i<=300;i++){

			if(judgehuiwen(judge(i*i,j)))

				pw.println(judge(i,j)+" "+judge(i*i,j));

		}

		pw.close();

	}

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new FileReader("palsquare.in"));

		judgepingfang(Integer.parseInt(br.readLine()));

		br.close();

	}

}

第三题:

package Karl.Water;



/*

LANG:JAVA

TASK:milk

*/



import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.StringTokenizer;



public class milk {

	public static void quick_sort(int[][] arr,int begin,int end){

		for(int x=0;x<arr.length-1;x++){

			for(int y=0;y<arr.length-x-1;y++){

				if(arr[y][0]>arr[y+1][0]){

					int temp=0;

					int temper=0;

					temp=arr[y][0];

					temper=arr[y][1];

					arr[y][0]=arr[y+1][0];

					arr[y][1]=arr[y+1][1];

					arr[y+1][0]=temp;

					arr[y+1][1]=temper;

				}

			}

		}

	}

	public static void fun(int[][] a,int needNum,int lineNum) throws IOException {

		PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("milk.out")), true);

		int k = 0;

		int money = 0;

		if(a.length==0){

			out.println(0);

		}

		for(int i=0;i<lineNum;i++){

			k = k + a[i][1];

			money = money + a[i][0]*a[i][1];

			if(k==needNum){

				out.println(money);

				break;

			}

			if(k>needNum){

				money=(a[i][1]-(k-needNum))*a[i][0]+(money-a[i][0]*a[i][1]);

				out.println(money);

				break;

			}

		}

		out.close();

	}

	public static void agg() throws IOException {

		BufferedReader in = new BufferedReader(new FileReader("milk.in"));

		StringTokenizer st = new StringTokenizer(in.readLine());

		int need = Integer.parseInt(st.nextToken());

		int farmerNum = Integer.parseInt(st.nextToken());

		int[][] a = new int[farmerNum][2];

		for(int i=0;i<farmerNum;i++){

			st = new StringTokenizer(in.readLine());

			a[i][0] = Integer.parseInt(st.nextToken());

			a[i][1] = Integer.parseInt(st.nextToken());

		}

		quick_sort(a,0,farmerNum-1);

		fun(a,need,farmerNum);

	}

	public static void main(String[] args) throws IOException {

		agg();

	}

}


你可能感兴趣的:(USACO)