`

ACM POJ部分题目

阅读更多
以下是自己做的一些北京大学poj的acm题目,刚刚开始做,做的有些水。不断更新中。
package cn.edu.szpku.poj;

import java.math.BigDecimal;
import java.util.Scanner;

public class _1001 {
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		while (cin.hasNextBigDecimal()) {
			BigDecimal R = cin.nextBigDecimal();
			int n = cin.nextInt();
			R = R.pow(n);
			String answer = R.stripTrailingZeros().toPlainString();
			if (answer.startsWith("0."))
				answer = answer.substring(1);
			System.out.println(answer);
		}
	}

}



package cn.edu.szpku.poj;

import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeMap;

public class _1002 {

	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		int round = cin.nextInt();
		String inputString = "";
		String standardTelephoneNumber = "";
		TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
		
		for(int i=0;i<round;i++){
			StringBuffer sb = new StringBuffer();
			inputString = cin.next();
			char[] input_array = inputString.toCharArray();
			for(int j=0;j<input_array.length;j++){
				switch(input_array[j]){
				case 'A': case 'B': case 'C':
					sb.append('2');
					break;
				case 'D': case 'E': case 'F':
					sb.append('3');
					break;
				case 'G': case 'H': case 'I':
					sb.append('4');
					break;
				case 'J': case 'K': case 'L':
					sb.append('5');
					break;
				case 'M': case 'N': case 'O':
					sb.append('6');
					break;
				case 'P': case 'R': case 'S':
					sb.append('7');
					break;
				case 'T': case 'U': case 'V':
					sb.append('8');
					break;
				case 'W': case 'X': case 'Y':
					sb.append('9');
					break;
				case '-': 
					break;
				default:
					sb.append(input_array[j]);
					break;
				}
			}
			standardTelephoneNumber = sb.insert(3, "-").toString();
			if(tm.containsKey(standardTelephoneNumber)){
				Integer value = tm.get(standardTelephoneNumber);
				tm.put(standardTelephoneNumber, ++value);
			}else{
				tm.put(standardTelephoneNumber, 1);
			}
		}
		
		Iterator<String> iter = tm.keySet().iterator();
		boolean flag = false;
		while(iter.hasNext()){
			String key = iter.next();
			int value = tm.get(key);
			if(value != 1){
				System.out.println(key + " " + value);
				flag = true;
			}
		}
		if(flag == false){
			System.out.println("No duplicates.");
		}
		
		
	}
}



package cn.edu.szpku.poj;

import java.util.Scanner;

public class _1003 {
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		float input = 0f;

		while(cin.hasNextFloat()){
			int basicN = 2;
			float sum = 0f;
			float preSum = 0f;
			
			
			input = cin.nextFloat();
			if(input <= 0.00){
				break;
			}
			else if(input <= 0.5 && input > 0.00){
				System.out.println("1 card(s)");
			}
			else{
				for(;;){
					sum += 1.0 / basicN;
					if(input - sum <= 0.00 && input - preSum > 0.00){
						System.out.println(basicN-1 + " card(s)");
						break;
					}
					++basicN;
					preSum = sum;
				}
			}
		}
	}
}



package cn.edu.szpku.poj;

import java.text.DecimalFormat;
import java.util.Scanner;

public class _1004 {
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		float input = 0f;
		float sum = 0f;
		for(int i=0;i<12;i++){
			input = cin.nextFloat();
			sum += input;
		}
		DecimalFormat df = new DecimalFormat("#.00");
		String output = df.format(sum / 12);
		System.out.println("$"+output);
	}
}


package cn.edu.szpku.poj;

import java.util.Scanner;

public class _1005 {

	public static double calculateSqure(double x,double y){
		double result = Math.PI * (x * x + y * y) / 2;
		return result;
		
	}
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		int n = 0;
		n = cin.nextInt();
		
		double X=0,Y=0;
		int year = 0;
		int num = 0;
		for(int i=0;i<n;i++){
			X = cin.nextDouble();
			Y = cin.nextDouble();
			//year = (int)(pku1005.calculateSqure(X, Y) / 50) + 1;
			year = (int)Math.ceil(calculateSqure(X, Y) / 50);
			System.out.println("Property "+ ++num +": This property will begin eroding in year "+year+".");
		}
		System.out.println("END OF OUTPUT.");
		
	}
}

package cn.edu.szpku.poj;

import java.util.Scanner;

public class _1006 {
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);

		int p = 0, e = 0, i = 0, d = 0;
		int count = 0;
		while (cin.hasNextInt()) {
			p = cin.nextInt();
			e = cin.nextInt();
			i = cin.nextInt();
			d = cin.nextInt();
			if (p == -1 && e == -1 && i == -1 && d == -1) {
				break;
			}
			int result = (5544 * p + 14421 * e + 1288 * i - d + 21252) % 21252;

			if (result == 0) {
				result = 21252;
			}
			System.out.println("Case " + ++count
					+ ": the next triple peak occurs in " + result + " days.");
		}
	}
}

package cn.edu.szpku.poj;

import java.util.Scanner;

/**
 * 中国剩余定理
 * @author Yuanbo Han
 *
 */
public class _1006Util {
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		System.out.println("输入你要得到几个数据:");
		int count = 0;
		count = cin.nextInt();
		
		int maxNum = 1006;
		int result = 0;
		//由于是pku的1006题目出来的想法,所以我暂时将最大的数据定为1006
		//NUMS 是周期的数     MODS是余数.然后将分别输出NUMS[i]对应的数据
		
		System.out.println("请分别输入你的数据:");
		int[] NUMS = new int[count];
		for(int i=0;i<count;i++){
			NUMS[i] = cin.nextInt();
		}
		
		
		for(int j=0;j<count;j++){
			int tempSum = 1;
			for(int k=0;k<count;k++){
				if(k != j){
					tempSum *= NUMS[k];
				}
			}
			for(int k=1;k<=maxNum;k++){
				result = tempSum * k;
				if(result % NUMS[j] == 1){
					break;
				}
			}
			System.out.println(NUMS[j]+"对应的数据是:  "+result);
		}
		System.out.println("得到相应的数据之后,根据将所有的   NUMS[i] * MODS[i]相加,\n然后mod 所有的NUMS[i]相乘就得到了解");
	}
}

package cn.edu.szpku.poj;

import java.util.Scanner;

public class _1007 {
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		int characterNum = 0;
		int count = 0;
		characterNum = cin.nextInt();
		count = cin.nextInt();
		
		int index = 0;
		String[] input = new String[count];
		int[] sumForEveryString = new int[count];
		
		while(cin.hasNext()){
			input[index] = cin.next();
			char[] tempChar = input[index].toCharArray();
			
			int tempSum = 0;
			for(int i=0;i<characterNum;i++){
				for(int j=i+1;j<characterNum;j++){
					if(tempChar[i] > tempChar[j]){
						++tempSum;
					}
				}
			}
			
			
			sumForEveryString[index] = tempSum;
			++index;
			if(index >= count){
				break;
			}
		}
		
		
		
		for(int i=0;i<count;i++){
			int outputIndex = 0;//输出后将此位置设置为10000
			for(int j=0;j<count;j++){
				if(sumForEveryString[j] < sumForEveryString[outputIndex]){
					outputIndex = j;
				}
			}
			System.out.println(input[outputIndex]);
			sumForEveryString[outputIndex] = 10000;
		}
	}
}

package cn.edu.szpku.poj;

import java.util.Scanner;

public class _1008 {

	// 将19个月转换成整型数值
	public static int convertMonthStringToInteger_Haab(String str) {
		int value = 0;
		if (str.equals("pop"))
			value = 1;
		else if (str.equals("no"))
			value = 2;
		else if (str.equals("zip"))
			value = 3;
		else if (str.equals("zotz"))
			value = 4;
		else if (str.equals("tzec"))
			value = 5;
		else if (str.equals("xul"))
			value = 6;
		else if (str.equals("yoxkin"))
			value = 7;
		else if (str.equals("mol"))
			value = 8;
		else if (str.equals("chen"))
			value = 9;
		else if (str.equals("yax"))
			value = 10;
		else if (str.equals("zac"))
			value = 11;
		else if (str.equals("ceh"))
			value = 12;
		else if (str.equals("mac"))
			value = 13;
		else if (str.equals("kankin"))
			value = 14;
		else if (str.equals("muan"))
			value = 15;
		else if (str.equals("pax"))
			value = 16;
		else if (str.equals("koyab"))
			value = 17;
		else if (str.equals("cumhu"))
			value = 18;
		else
			value = 19;
		return value;
	}

	// 将给定的月份转换成月份的名字
	public static String convertMonthIntegerToString_Tzolkin(int month) {
		String str = "";
		
		if (month == 1)
			str = "imix";
		else if (month == 2)
			str = "ik";
		else if (month == 3)
			str = "akbal";
		else if (month == 4)
			str = "kan";
		else if (month == 5)
			str = "chicchan";
		else if (month == 6)
			str = "cimi";
		else if (month == 7)
			str = "manik";
		else if (month == 8)
			str = "lamat";
		else if (month == 9)
			str = "muluk";
		else if (month == 10)
			str = "ok";
		else if (month == 11)
			str = "chuen";
		else if (month == 12)
			str = "eb";
		else if (month == 13)
			str = "ben";
		else if (month == 14)
			str = "ix";
		else if (month == 15)
			str = "mem";
		else if (month == 16)
			str = "cib";
		else if (month == 17)
			str = "caban";
		else if (month == 18)
			str = "eznab";
		else if (month == 19)
			str = "canac";
		else if (month == 20)
			str = "ahau";

		return str;
	}

	public static int totalDay_Haab(int year, int month, int day) {
		// 一年365天 每个月20天 共19个月 第19个月5天
		// 第一天从 0. 1 0 开始 0. pop 0 (日. 月 年)
		int totalDay = 0;

		totalDay += year * 365;
		totalDay += (month - 1) * 20;
		totalDay += day + 1;

		return totalDay;
	}

	public static int getNum_Tzolkin(int totalDay_Haab) {
		int num_Tzolkin = (totalDay_Haab - getYear_Tzolkin(totalDay_Haab) * 260) % 13;
		if (num_Tzolkin == 0) {
			num_Tzolkin = 13;
		}
		return num_Tzolkin;
	}

	public static int getName_Tzolkin(int totalDay_Haab) {
		int name_Tzolkin = 0;
		name_Tzolkin = (totalDay_Haab - getYear_Tzolkin(totalDay_Haab) * 260) % 20;
		if (name_Tzolkin == 0) {
			name_Tzolkin = 20;
		}
		return name_Tzolkin;
	}

	public static int getYear_Tzolkin(int totalDay_Haab) {
		int year_Tzolkin = (totalDay_Haab - 1) / 260;
		return year_Tzolkin;
	}

	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		int num = cin.nextInt();
		System.out.println(num);
		for (int i = 0; i < num; i++) {
			String temp1 = cin.next();
			String temp2 = cin.next();
			int yearHaab = cin.nextInt();
			int dayHaab = Integer.parseInt(temp1.substring(0, temp1.length() - 1));
			int monthHaab = convertMonthStringToInteger_Haab(temp2);
			
			int totalDayHaab = totalDay_Haab(yearHaab, monthHaab, dayHaab);

			int yearTzolkin = getYear_Tzolkin(totalDayHaab);
			int intNameTzolkin = getName_Tzolkin(totalDayHaab);
			int numTzolkin = getNum_Tzolkin(totalDayHaab);
			String strNameTzolkin = convertMonthIntegerToString_Tzolkin(intNameTzolkin);

			System.out.println(numTzolkin + " " + strNameTzolkin + " " + yearTzolkin);
		}
	}
}

分享到:
评论

相关推荐

    acm poj题目分类

    acm poj 比较详细的将poj的题目进行了分类,如dp,搜索,数据结构等等

    ACM poj 题目分类

    【ACM POJ 题目分类】是针对ACM(国际大学生程序设计竞赛)中的问题进行的一种整理和归类,旨在帮助参赛者更有效地学习和准备比赛。这些题目涵盖了不同的算法和编程技巧,通常根据难度和涉及的主题进行划分。在POJ...

    北大acm题解(poj题目分析)

    书中的每一章对应一个或多个POJ题目,每个章节都会详细剖析解题步骤,让你在实践中不断提升编程技能。无论你是ACM新手还是有一定经验的参赛者,都能从中找到适合自己的学习路径,提高解决问题的能力。 总的来说,...

    pojACM题目分类

    pojACM题目分类,便于各类型同学分别做题有所参考

    北大POJ部分题目答案(一些基础题目)

    很多的POJ题目答案!1000~1008,1011~1014,1016,1017,1019,1028,1032,1045,1046,1047,1050,1061,1067,1068,1088,1102,1159,1163,1183,1207,1218,1226,1247,1256,1258,1298,1316,1323,...

    ACM POJ PKU 最全题目分类

    ### ACM POJ PKU 最全题目分类解析 #### 动态规划(DP) 在计算机科学领域,动态规划(Dynamic Programming, DP)是一种重要的算法思想,主要用于解决多阶段决策过程中的优化问题。它通过将原问题分解成相互重叠的...

    acm poj题目分类介绍 包含一个题解文档

    这个压缩包“acm poj题目分类介绍 包含一个题解文档”显然是为了帮助参赛者更好地理解和解决这些题目,其中包含了一个题解文档,这将对学习ACM竞赛编程大有裨益。 首先,让我们了解一下ACM比赛的基本情况。ACM竞赛...

    POJ部分题目源代码

    这份“POJ部分题目源代码”文档,便是对这些挑战的智慧结晶,它包含了作者在解决POJ题目过程中的思考和实践,对于想要深入ACM领域的学习者来说,是一份宝贵的参考资料。 首先,我们要理解ACM竞赛的基本规则。在规定...

    北大ACM_POJ_题目分类列表

    【北大ACM_POJ_题目分类列表】是一个为了帮助ACM竞赛初学者系统性地进行训练而整理的资源。这个列表将北京大学在线评测系统POJ中的题目按照不同的算法和题型进行了分类,使得学习者可以更有针对性地提高自己的编程...

    poj 部分题目源代码(共77题) for acm ,一年所做的

    描述提到的“部分题目源代码(共77题) for acm,一年所做的”表明这是一份作者在过去一年里在POJ平台上完成的77个问题的源代码集合。这些源代码涵盖了不同的难度级别和主题,反映了作者在算法和编程技能上的学习和...

    acm poj300题分层训练

    poj1035、poj3080等训练了串的操作,poj2388、poj2299等则涉及排序问题,poj2524、poj1611等是并查集的实例,poj3349、poj3274等展示了哈希表和二分查找,poj3253是哈夫曼树的题目,poj2442和poj1442则关于堆。...

    POJ各题算法分类和题目推荐 ACM必看

    POJ算法分类和题目推荐指南 本资源主要介绍了POJ(Online Judge)平台上各种算法分类和推荐题目,涵盖了动态规划、模拟、博弈等多种类型。以下是详细的知识点说明: 一、动态规划 动态规划是一种非常重要的算法...

    ACM.zip_ACM_poj_poj3187_poj3669

    标题 "ACM.zip_ACM_poj_poj3187_poj3669" 提供的信息表明,这个压缩包包含的是与ACM(国际大学生程序设计竞赛)相关的编程题目解决方案,具体是POJ(Programming Online Judge)平台上的两道题目,编号分别为poj3187...

    POJ题目简单分类(ACM)

    【标题】"POJ题目简单分类(ACM)" 涉及的知识点: 【描述】中的"学习起来更系统,更清爽"暗示了本话题旨在为ACM竞赛初学者提供一个有条理的学习路径。 【标签】"POJ 分类"表明我们将探讨的是基于POJ(Problemset On...

    ACM训练必备POJ ZOJ题目分类及解题思路

    学习ACM程序设计的朋友一定要看,这是训练必备的POJ ZOJ题目分类及解题思路

    POJ ACM题目分类.

    在ACM(国际大学生程序设计竞赛)中,POJ(Problemset Online Judge)是一个常用的在线评判系统,提供了大量的编程题目供参赛者练习和比赛。这些题目涵盖了多种算法和编程技巧,帮助参赛者提升解决问题的能力。根据提供...

    poj图论题目汇总

    在本篇文章中,我们将深入探讨POJ平台上的一系列经典图论问题,并根据提供的部分内容,总结出每个题目背后所涉及的核心算法和技术点。这些题目不仅考验了参赛者的逻辑思维能力,同时也对数据结构和算法的掌握提出了...

    poj 1000 - 2000 部分题目 官方分类

    《POJ 1000 - 2000 部分题目 官方分类》 编程竞赛,特别是在线判题系统(如POJ,即Problem Online Judge)中的题目,是提升编程技能和算法理解的重要途径。POJ 1000 - 2000 是一个涵盖广泛的题目区间,包含了大量的...

    pojacm题目具体分类

    ### poj题目具体分类知识点 **一、主流算法** 1. **搜索** - 回溯:这是一种通过尝试解决子问题并回退来寻找问题解的方法。例如,在解决N皇后问题时,我们会尝试放置皇后,一旦发现冲突就撤销该决策。 2. **动态...

    ACM POJ 1002题解摘要

    ### ACM POJ 1002题解摘要 #### 题目背景与目标 本题目来自POJ(Pacific OpenJudge)平台上的一个经典问题,编号为1002。题目要求解决的是电话号码标准化的问题,即如何将各种形式的电话号码转换成统一的标准格式...

Global site tag (gtag.js) - Google Analytics