南昌航空大学4-6次PTA总结
Posted 200409lzb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了南昌航空大学4-6次PTA总结相关的知识,希望对你有一定的参考价值。
对近期所学进行一个小结,主要针对pta上所发布的近三次作业,从多方面来分析这三次作业之间的联系和差异性,并从中了解自己的不足和缺点。最近的三次作业,
第一次作业除了第一题菜单类比较难其他还是比较简单,通过调用java自带的方法来节省我们编程的时间,主要考察的是我们对java的字符串处理,例如查找重复的数据,字符串的统计和排序GPS的度分秒转换。对于Java处理日期的函数的调用。
第二次作业考察了正则表达式,和日期类的设计,主要考察了类之间的聚合关系。前面几题的难度比较小,最后两题日期类的难度较大,主要是对类之中的调用关系不太熟练。求下n天的判断逻辑处理不好,但是经过不断的改正也写出来了。因为是初学,题目给了类图,我们只需要根据类图来写代码比较简单
第三次作业的难度较大,考察水文正则表达式,银行账户类设计,图形类的继承。其中水文检测这题难度比较大,我写了两个晚自习还没有写出来。这也让我发现自己的能力还是有很大的不足之处,在处理较难问题时,不应该马上写代码,而是要先对程序进行设计,先想一下程序有几个类以及类与类之间的关系。
代码如下:
Student类具体要求如下:
私有成员变量:学号(sid,String类型),姓名(name,String类型),年龄(age,int类型),专业(major,String类型) 。
提供无参构造和有参构造方法。(注意:有参构造方法中需要对年龄大小进行判定)
普通成员方法:print(),输出格式为“学号:6020203100,姓名:王宝强,年龄:21,专业:计算机科学与技术”。
普通成员方法:提供setXxx和getXxx方法。(注意:setAge()方法中需要对年龄进行判定)
注意:
年龄age不大于0,则不进行赋值。
print()中的“:”和“,”为均为中文冒号和逗号。
import java.util.*;
public class Main
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
//调用无参构造方法,并通过setter方法进行设值
String sid1 = sc.next();
String name1 = sc.next();
int age1 = sc.nextInt();
String major1 = sc.next();
Student student1 = new Student();
student1.setSid(sid1);
student1.setName(name1);
student1.setAge(age1);
student1.setMajor(major1);
//调用有参构造方法
String sid2 = sc.next();
String name2 = sc.next();
int age2 = sc.nextInt();
String major2 = sc.next();
Student student2 = new Student(sid2, name2, age2, major2);
//对学生student1和学生student2进行输出
student1.print();
student2.print();
/* 请在这里填写答案 */
class Student
private String sid;
private String name;
private int age;
private String major;
public Student()
public Student(String sid,String name,int age,String major)
this.sid=sid;
this.name=name;
if(age>0)
this.age=age;
this.major=major;
public String getSid()
return sid;
public String getName()
return name;
public int getAge()
return age;
public String getMajor()
return major;
public void setSid(String sid)
this.sid=sid;
public void setName(String name)
this.name=name;
public void setAge(int age)
this.age=age;
public void setMajor(String major)
this.major=major;
public void print()
System.out.println("学号:" + sid + ",姓名:" + name + ",年龄:" + age + ",专业:" + major);
第三次7-1:
设计点菜计价程序,根据输入的信息,计算并输出总价格。
输入内容按先后顺序包括两部分:菜单、订单,最后以"end"结束。
菜单由一条或多条菜品记录组成,每条记录一行
每条菜品记录包含:菜名、基础价格 两个信息。
订单分:桌号标识、点菜记录和删除信息、代点菜信息。每一类信息都可包含一条或多条记录,每条记录一行或多行。
桌号标识独占一行,包含两个信息:桌号、时间。
桌号以下的所有记录都是本桌的记录,直至下一个桌号标识。
点菜记录包含:序号、菜名、份额、份数。份额可选项包括:1、2、3,分别代表小、中、大份。
不同份额菜价的计算方法:小份菜的价格=菜品的基础价格。中份菜的价格=菜品的基础价格1.5。小份菜的价格=菜品的基础价格2。如果计算出现小数,按四舍五入的规则进行处理。
删除记录格式:序号 delete
标识删除对应序号的那条点菜记录。
如果序号不对,输出"delete error"
代点菜信息包含:桌号 序号 菜品名称 份额 分数
代点菜是当前桌为另外一桌点菜,信息中的桌号是另一桌的桌号,带点菜的价格计算在当前这一桌。
程序最后按输入的先后顺序依次输出每一桌的总价(注意:由于有代点菜的功能,总价不一定等于当前桌上的菜的价格之和)。
每桌的总价等于那一桌所有菜的价格之和乘以折扣。如存在小数,按四舍五入规则计算,保留整数。
折扣的计算方法(注:以下时间段均按闭区间计算):
周一至周五营业时间与折扣:晚上(17:00-20:30)8折,周一至周五中午(10:30--14:30)6折,其余时间不营业。
周末全价,营业时间:9:30-21:30
如果下单时间不在营业范围内,输出"table " + t.tableNum + " out of opening hours"
参考以下类的模板进行设计:菜品类:对应菜谱上一道菜的信息。
Dish
String name;//菜品名称
int unit_price; //单价
int getPrice(int portion)//计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份)
菜谱类:对应菜谱,包含饭店提供的所有菜的信息。
Menu
Dish\\[\\] dishs ;//菜品数组,保存所有菜品信息
Dish searthDish(String dishName)//根据菜名在菜谱中查找菜品信息,返回Dish对象。
Dish addDish(String dishName,int unit_price)//添加一道菜品信息
点菜记录类:保存订单上的一道菜品记录
Record
int orderNum;//序号\\\\
Dish d;//菜品\\\\
int portion;//份额(1/2/3代表小/中/大份)\\\\
int getPrice()//计价,计算本条记录的价格\\\\
订单类:保存用户点的所有菜的信息。
Order
Record\\[\\] records;//保存订单上每一道的记录
int getTotalPrice()//计算订单的总价
Record addARecord(int orderNum,String dishName,int portion,int num)//添加一条菜品信息到订单中。
delARecordByOrderNum(int orderNum)//根据序号删除一条记录
findRecordByNum(int orderNum)//根据序号查找一条记录
### 输入格式:
桌号标识格式:table + 序号 +英文空格+ 日期(格式:YYYY/MM/DD)+英文空格+ 时间(24小时制格式: HH/MM/SS)
菜品记录格式:
菜名+英文空格+基础价格
如果有多条相同的菜名的记录,菜品的基础价格以最后一条记录为准。
点菜记录格式:序号+英文空格+菜名+英文空格+份额+英文空格+份数注:份额可输入(1/2/3), 1代表小份,2代表中份,3代表大份。
删除记录格式:序号 +英文空格+delete
代点菜信息包含:桌号+英文空格+序号+英文空格+菜品名称+英文空格+份额+英文空格+分数
最后一条记录以“end”结束。
### 输出格式:
按输入顺序输出每一桌的订单记录处理信息,包括:
1、桌号,格式:table+英文空格+桌号+”:”
2、按顺序输出当前这一桌每条订单记录的处理信息,
每条点菜记录输出:序号+英文空格+菜名+英文空格+价格。其中的价格等于对应记录的菜品\\*份数,序号是之前输入的订单记录的序号。如果订单中包含不能识别的菜名,则输出“\\*\\* does not exist”,\\*\\*是不能识别的菜名
如果删除记录的序号不存在,则输出“delete error”
最后按输入顺序一次输出每一桌所有菜品的总价(整数数值)格式:table+英文空格+桌号+“:”+英文空格+当前桌的总价
本次题目不考虑其他错误情况,如:桌号、菜单订单顺序颠倒、不符合格式的输入、序号重复等,在本系列的后续作业中会做要求。
输入格式:
桌号标识格式:table + 序号 +英文空格+ 日期(格式:YYYY/MM/DD)+英文空格+ 时间(24小时制格式: HH/MM/SS)
菜品记录格式:
菜名+英文空格+基础价格
如果有多条相同的菜名的记录,菜品的基础价格以最后一条记录为准。
点菜记录格式:序号+英文空格+菜名+英文空格+份额+英文空格+份数注:份额可输入(1/2/3), 1代表小份,2代表中份,3代表大份。
删除记录格式:序号 +英文空格+delete
代点菜信息包含:桌号+英文空格+序号+英文空格+菜品名称+英文空格+份额+英文空格+分数
最后一条记录以“end”结束。
输出格式:
按输入顺序输出每一桌的订单记录处理信息,包括:
1、桌号,格式:table+英文空格+桌号+“:”
2、按顺序输出当前这一桌每条订单记录的处理信息,
每条点菜记录输出:序号+英文空格+菜名+英文空格+价格。其中的价格等于对应记录的菜品\\*份数,序号是之前输入的订单记录的序号。如果订单中包含不能识别的菜名,则输出“\\*\\* does not exist”,\\*\\*是不能识别的菜名
如果删除记录的序号不存在,则输出“delete error”
最后按输入顺序一次输出每一桌所有菜品的总价(整数数值)格式:table+英文空格+桌号+“:”+英文空格+当前桌的总价
本次题目不考虑其他错误情况,如:桌号、菜单订单顺序颠倒、不符合格式的输入、序号重复等,在本系列的后续作业中会做要求。
类图:
import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.*; public class Main public static void main(String[] args) int countOfOrder = 0; Menu menu = new Menu();// 创建一个菜单 Order order = new Order();// 创建集合 Operator operator = new Operator();// 创建业务类对象 operator.recordDish(menu);// 记录菜单 operator.recordOrderNum(order);// 记录桌号 operator.recordTime(order);// 记录时间 operator.orderDish(order,menu);// 记录点菜 // 输出 operator.output(order); class Operator // 业务类 Scanner input = new Scanner(System.in); public void output(Order order) boolean flag = true; for (int j = 0; flag; j++) float totalCost = 0; if(order.judgeTime(order) == -1) System.out.println("table " + order.getTableNum() + " out of opening hours"); else System.out.println("table " + order.getTableNum() + ": "); for (int i = 0; ; i++) if (order.records[i].getOrderNum() != -1) if (order.records[i].getIsValue() == 1) totalCost = totalCost + order.records[i].getPrice(); System.out.println(order.records[i].orderNum + " " + order.records[i].getD().getName() + " " + order.records[i].getPrice()); else totalCost = totalCost * order.judgeTime(order); if (totalCost - (int) totalCost >= 0.5) totalCost = (int) totalCost + 1;// 四舍五入 System.out.println("table " + order.getTableNum() + ": " + (int) totalCost); break; // 没设计好,先输出一桌 flag = false; public void recordDish(Menu menu) //记录菜品 int price; String name; for (int i = 0; ; i++) name = input.next(); if (name.equals("table")) break; price = input.nextInt(); menu.addDish(name, price); public void recordOrderNum(Order order) // 记录编号 order.setTableNum(input.nextInt()); public void recordTime(Order order) // 记录时间 int year = 0,month = 0,day = 0,hour = 0,min = 0,sec = 0; String[] time = input.nextLine().replace("/"," ").split(" "); year = Integer.parseInt(time[1]); month = Integer.parseInt(time[2]); day = Integer.parseInt(time[3]); hour = Integer.parseInt(time[4]); min = Integer.parseInt(time[5]); sec = Integer.parseInt(time[6]); order.setYear(year); order.setMonth(month); order.setDay(day); order.setHours(hour); order.setMin(min); order.setSec(sec); public boolean orderDish(Order order, Menu menu) // 记录点菜记录 boolean result = true; for (int i = 0; result; i++) int num = 0; String nums = input.next(); if (nums.equals("end")) result = false; break; else num = Integer.parseInt(nums); String dish = input.next(); if(dish.equals("delete")) order.delARecordByOrderNum(num); else order.records[i].isValue = 1; order.records[i].setOrderNum(num); order.records[i].setD(menu.searchDish(dish)); order.records[i].setPortion(input.nextInt()); order.records[i].setOrderQuantity(input.nextInt()); return result; public void deleteRecord(Order order, int recordNum) // 删除记录 order.delARecordByOrderNum(recordNum); class Dish // 记录一道菜品的信息 Dish(String name, int unit_price) this.name = name; this.unit_price = unit_price; private String name;//菜品名称 private int unit_price; //单价 public int getPrice(int portion) //计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份) double cost = 0; if (portion == 1) cost = unit_price; else if (portion == 2) cost = unit_price * 1.5; else if (portion == 3) cost = unit_price * 2; int result = 0; if (cost - (int) cost >= 0.5) result = (int) cost + 1; else result = (int) cost; return result; public String getName() return name; public int getUnit_price() return unit_price; class Menu public Dish[] dishs = new Dish[1000];//菜品数组,保存所有菜品信息 int dishIndex = 0; public Dish searchDish(String dishName) boolean existDish = false;// 记录判断结果 Dish result = new Dish("0", 0); for (int i = 0; i < 1000 ; i++) if (this.dishs[i].getName().equals(dishName)) result = dishs[i]; existDish = true; break; if (existDish == false) System.out.println(dishName + "does not exist"); return result; //根据菜名在菜谱中查找菜品信息,返回Dish对象。 public void addDish(String dishName, int unit_price) dishs[dishIndex] = new Dish(dishName, unit_price); dishIndex++; //添加一道菜品信息 class Record int orderNum;// 序号 Dish d;// 菜品 int orderQuantity;// 份数 int isValue = 0;// 记录是否作数 int portion;// 份额(1/2/3代表小/中/大份) public int getPrice() return this.orderQuantity * d.getPrice(portion); //计价,计算本条记录的价格 Record() Record(int orderNum, String name, int orderQuantity, int portion) setOrderNum(orderNum); setPortion(portion); setOrderQuantity(orderQuantity); public int getOrderNum() return orderNum; public void setOrderNum(int orderNum) this.orderNum = orderNum; public int getIsValue() return isValue; public void setIsValue(int isValue) this.isValue = isValue; public Dish getD() return d; public void setD(Dish d) this.d = d; public int getOrderQuantity() return orderQuantity; public void setOrderQuantity(int orderQuantity) this.orderQuantity = orderQuantity; public int getPortion() return portion; public void setPortion(int portion) this.portion = portion; class Order Record[] records = new Record[100];// 保存订单上每一道的记录 int tableNum;// 桌编号 Order() for(int i = 0 ;i < 100 ;i++) this.records[i] = new Record(-1,"1",-1,-1);// 实例化创建内存 public float judgeTime(Order order) // 判断下单时间获得折扣或不营业 int week = 3;// 星期数 float discount = 1; LocalDate timeStander = LocalDate.of(1898, 12, 19);// 设置参照时间1000年1月1 星期三 LocalDate time = LocalDate.of(order.getYear(), order.getMonth(), order.getDay()); week = ((int) timeStander.until(time, ChronoUnit.DAYS) + week) % 7;// 计算当前星期几 if (week >= 1 && week <= 5) // 周一到周五 if (order.getHours() >= 17 && order.getHours() < 20 && order.getMin() < 60 && order.getMin() >= 0 || order.getHours() == 20 && order.getMin() <= 30 && order.getMin() >= 0) discount = 0.8F; //晚上 else if (order.getHours() > 10 && order.getHours() < 14 && order.getMin() < 60 && order.getMin() >= 0 || order.getHours() == 10 && order.getMin() <= 30 && order.getMin() >= 0 || order.getHours() == 14 && order.getMin() <= 30 && order.getMin() >= 0) discount = 0.6F; //中午 else discount = -1; // 不营业 else // 周六周日week = 6 或 0 if (order.getHours() > 9 && order.getHours() < 21 && order.getMin() < 60 && order.getMin() >= 0 || order.getHours() == 9 && order.getMin() <= 30 && order.getMin() >= 0) discount = 1; // 营业 else discount = -1; // 不营业 return discount; public int getTableNum() return tableNum; public void setTableNum(int tableNum) this.tableNum = tableNum; int year, month, day, hours, min, sec; // 记录下单时间 public int getYear() return year; public void setYear(int year) this.year = year; public int getMonth() return month; public void setMonth(int month) this.month = month; public int getDay() return day; public void setDay(int day) this.day = day; public int getHours() return hours; public void setHours(int hours) this.hours = hours; public int getMin() return min; public void setMin(int min) this.min = min; public int getSec() return sec; public void setSec(int sec) this.sec = sec; public int getTotalPrice() int sum = 0; for (int i = 0; i <= recordIndex; i++) if(records[i].getIsValue() == 1) sum = sum + records[i].getPrice(); return sum; //计算订单的总价(不含折扣) static int recordIndex = 0;// 记录索引 public Record addARecord(int orderNum, String name, int orderQuantity, int portion, Menu menu) this.records[recordIndex] = new Record(orderNum, name, orderQuantity, portion); recordIndex++; return this.records[recordIndex - 1]; //添加一条菜品信息到订单中。 public void delARecordByOrderNum(int orderNum) int i = 0; for (i = 0; ; i++) if (records[i].orderNum == orderNum) records[i].setIsValue(0); break; //根据序号删除一条记录 public Record findRecordByNum(int orderNum) int i = 0; for (i = 0; ; i++) if (orderNum == records[i].orderNum) records[i].isValue = 0; break; return records[i]; //根据序号查找一条记录
这道题目对我来说确实是难度很大,在有限的时间内我也尽力尝试去完成了,即便只完成了很少的测试点,但在此次作业中,我还是有很多收获,下面列举一些我在本题中踩过的坑与收获心得。
- 在面对复杂程序时,务必要先花时间进行类设计,不论是实体类还是业务类,都要根据需求进行相应的设计,不得边写边设计,最后耗费时间且代码质量低。
- 编码应当遵守编码规范,尤其是空格和缩进,对于这种长代码,往往一时半会难以完成,隔天再看时代码的结构非常影响阅读,合理的编码方式不仅提高效率,也提高代码质量,反之则会导致低效低质。
对软件学院2020级同学学号进行校验,学号共八位,规则如下:
- 1、2位:入学年份后两位,例如20年
- 3、4位:学院代码,软件学院代码为20
- 5位:方向代码,例如1为软件工程,7为物联网
- 6位:班级序号
- 7、8位:学号(序号)
要求如下:
- 只针对2020级
- 其中软件工程专业班级分别为:202011~17、61,物联网工程专业班级为202071~202073,数据科学与大数据专业班级为202081~82
- 每个班级学号后两位为01~40
输入格式:
在一行输入一个字符串。
输出格式:
若符合规则的学号,输出”正确“,若不符合,输出”错误“。
输入样例1:
在这里给出一组输入。例如:
20201536
输出样例1:
在这里给出相应的输出。例如:
正确
输入样例2:
在这里给出一组输入。例如:
20201541
输出样例2:
在这里给出相应的输出。例如:
错误
import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner ID = new Scanner(System.in);
String a = ID.next();
if(a.matches("^2020(61|1[1-7]|7[1-3]|8[1-2])([1-3][0-9]|40|0[1-9])$"))///判断学号是否合法
System.out.print("正确");
else
System.out.print("错误");
代码思路:这题还是比较简单,主要考察正则表达式对于学号的检验
- 导入Scanner类,用于输入学号;
- 使用正则表达式判断学号是否合法;
- 如果学号合法,输出"正确",否则输出"
7-5 日期问题面向对象设计(聚合一)有题解分数 50全屏浏览题目切换布局作者 段喜龙单位 南昌航空大学
参考题目7-2的要求,设计如下几个类:DateUtil、Year、Month、Day,其中年、月、日的取值范围依然为:year∈[1900,2050] ,month∈[1,12] ,day∈[1,31] , 设计类图如下:
应用程序共测试三个功能:
- 求下n天
- 求前n天
- 求两个日期相差的天数
注意:严禁使用Java中提供的任何与日期相关的类与方法,并提交完整源码,包括主类及方法(已提供,不需修改)
输入格式:
有三种输入方式(以输入的第一个数字划分[1,3]):
- 1 year month day n //测试输入日期的下n天
- 2 year month day n //测试输入日期的前n天
- 3 year1 month1 day1 year2 month2 day2 //测试两个日期之间相差的天数
输出格式:
- 当输入有误时,输出格式如下:
Wrong Format
- 当第一个数字为1且输入均有效,输出格式如下:
year-month-day
- 当第一个数字为2且输入均有效,输出格式如下:
year-month-day
- 当第一个数字为3且输入均有效,输出格式如下:
天数值
输入样例1:
在这里给出一组输入。例如:
3 2014 2 14 2020 6 14
输出样例1:
在这里给出相应的输出。例如:
2312
输入样例2:
在这里给出一组输入。例如:
2 1935 2 17 125340
输出样例2:
在这里给出相应的输出。例如:
1591-12-17
输入样例3:
在这里给出一组输入。例如:
1 1999 3 28 6543
输出样例3:
在这里给出相应的输出。例如:
2017-2-24
输入样例4:
在这里给出一组输入。例如:
0 2000 5 12 30
输出样例4:
在这里给出相应的输出。例如:
Wrong Format
代码实现:
import java.util.Scanner; public class Main public static void main(String[] args) Scanner input = new Scanner(System.in); int year = 0, month = 0, day = 0, m, n; int choice = input.nextInt();//判断操作类型 year = input.nextInt(); month = input.nextInt(); day = input.nextInt(); DateUtil date = new DateUtil(year, month, day); if (choice == 1) n = input.nextInt();// 输入n if (!date.checkInputValidity() || n < 0) // 如果数据不合法 System.out.println("Wrong Format"); System.exit(0); else System.out.println(date.getNextNDays(n).showDate()); else if (choice == 2) m = input.nextInt();// 输入m if (!date.checkInputValidity() || m< 0) // 如果数据不合法 System.out.println("Wrong Format"); System.exit(0); else System.out.println(date.getPreviousNDays(m).showDate()); else if (choice == 3) int anotherYear = Integer.parseInt(input.next()); ////输入令一天的信息 int anotherMonth = Integer.parseInt(input.next()); int anotherDay = Integer.parseInt(input.next()); DateUtil toDate = new DateUtil(anotherYear, anotherMonth, anotherDay); if (!date.checkInputValidity() || !toDate.checkInputValidity()) // 如果数据不合法 System.out.println("Wrong Format"); System.exit(0); else System.out.println(date.getDaysofDates(toDate)); else System.out.println("Wrong Format"); class Year private int value; public Year() public Year(int value) this.value = value; public int getValue() return value; public void setValue(int value) this.value = value; public boolean isLeapYear() boolean flag =false; if ((value % 4 == 0 && value % 100 != 0) || value % 400 == 0) flag = true; return flag; public boolean validate() ///判断输入的年份 if (value <= 2050 && value >= 1900) return true; else return false; public void yearIncrement() value++; public void yearReduction() value--; class Month private int value; private Year year; public Month() public Month(int yearValue, int monthValue) this.year = new Year(yearValue); this.value = monthValue; public int getValue() return value; public Year getYear() return year; public void setValue(int value) this.value = value; public void setYear(Year year) this.year = year; public void resetMin() this.value = 1; public void resetMax() this.value = 12; public boolean validate() if (value >= 1 && value <= 12) return true; else return false; public void monthIncrement() value ++; public void monthReduction() value --; class Day private int value; private Month month; private int[] mon_maxnum1 = new int[] 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; public Day() super(); // TODO 自动生成的构造函数存根 public Day(int yearValue, int monthValue, int dayValue) this.month = new Month(yearValue, monthValue); this.value = dayValue; public int getValue() return value; public Month getMonth() return month; public void setValue(int value) this.value = value; public void setMonth(Month month) this.month = month; public void resetMin() value = 1; public void resetMax() value = mon_maxnum1[month.getValue() - 1]; public boolean validate() if (this.getMonth().getYear().isLeapYear()) mon_maxnum1[1] = 29; if (value >= 1 && value <= mon_maxnum1[month.getValue() - 1]) return true; else return false; public void dayIncrement() value ++; public void dayReduction() value --;; class DateUtil private Day day; public DateUtil() super(); // TODO 自动生成的构造函数存根 public DateUtil(int d, int m, int y) this.day = new Day(d, m, y); public Day getDay() return day; public void setDay(Day day) this.day = day; public boolean checkInputValidity() if (!this.getDay().getMonth().getYear().validate() || !this.getDay().getMonth().validate() ) return false; else if(!day.validate())return false; return true; public boolean compareDates(DateUtil date) boolean flag = false; if (date.getDay().getMonth().getYear().getValue() < this.getDay().getMonth().getYear().getValue()) flag = true; else if (date.getDay().getMonth().getYear().getValue() >this.getDay().getMonth().getYear().getValue()) flag = false; else if (date.getDay().getMonth().getValue() < this.getDay().getMonth().getValue()) flag = true; else if (date.getDay().getMonth().getValue() >this.getDay().getMonth().getValue()) flag = false; else if (date.getDay().getValue() < this.getDay().getValue()) flag = true; else if (date.getDay().getValue() > this.getDay().getValue()) flag = false; return flag; public boolean equalTwoDates(DateUtil date) if (date.getDay().getMonth().getYear().getValue() != this.getDay().getMonth().getYear().getValue() || date.getDay().getMonth().getValue() != this.getDay().getMonth().getValue() || date.getDay().getValue() != this.getDay().getValue()) return false; else return true; public String showDate() String s = "", x = "", y = "", z = ""; x = "" + this.getDay().getMonth().getYear().getValue(); y = "" + this.getDay().getMonth().getValue(); z = "" + this.getDay().getValue(); s = x + "-" + y + "-" + z; return s;// 以“year-month-day”格式返回日期值 public DateUtil getNextNDays(int n) ///求下n天 int[] months = new int[] 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; while (n > 365) /////减少运行时间,防止超限 if (this.getDay().getMonth().getYear().isLeapYear() && this.getDay().getMonth().getValue() <= 2) if (this.getDay().getMonth().getValue() == 2 && this.day.getValue() == 29) this.getDay().setValue(1); this.getDay().getMonth().setValue(3); this.getDay().getMonth().getYear().yearIncrement(); n = n - 366; else if (this.getDay().getMonth().getYear().isLeapYear() && this.getDay().getMonth().getValue() > 2) this.getDay().getMonth().getYear().yearIncrement(); n = n - 366; else this.getDay().getMonth().getYear().yearIncrement(); n = n - 365; for (int i = 0; i < n; i++) this.getDay().dayIncrement(); if (this.getDay().getMonth().getYear().isLeapYear() && this.getDay().getMonth().getValue() == 2) if (this.getDay().getValue() > 29) this.getDay().getMonth().monthIncrement(); this.getDay().setValue(1); else if (this.getDay().getValue() > months[this.getDay().getMonth().getValue()]) this.getDay().getMonth().monthIncrement(); this.getDay().setValue(1); if (this.getDay().getMonth().getValue() > 12) this.getDay().getMonth().setValue(1); this.getDay().getMonth().getYear().yearIncrement(); DateUtil nextDate = new DateUtil(this.getDay().getMonth().getYear().getValue(), this.getDay().getMonth().getValue(), this.getDay().getValue()); return nextDate; public DateUtil getPreviousNDays(int n) int[] months = new int[] 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; while (n > 365) if (this.getDay().getMonth().getYear().isLeapYear() && this.getDay().getMonth().getValue() > 2) n -= 366; this.getDay().getMonth().getYear().yearReduction(); else if (this.getDay().getMonth().getYear().isLeapYear() && this.getDay().getMonth().getValue() <= 2) n -= 366; this.getDay().getMonth().getYear().yearReduction(); else n -= 365; this.getDay().getMonth().getYear().yearReduction(); for (int i = 0; i < n; i++) this.getDay().dayReduction(); if (this.getDay().getValue() <= 0) this.getDay().getMonth().monthReduction(); if (this.getDay().getMonth().getValue() <= 0) this.getDay().getMonth().setValue(12); this.getDay().getMonth().getYear().yearReduction(); if (this.getDay().getMonth().getYear().isLeapYear() && this.getDay().getMonth().getValue() == 2) this.getDay().setValue(29); else this.getDay().setValue(months[this.getDay().getMonth().getValue()]); DateUtil nextDate = new DateUtil(this.getDay().getMonth().getYear().getValue(), this.getDay().getMonth().getValue(), this.getDay().getValue()); return nextDate; public int getDaysofDates(DateUtil date)// 求两天之间相差的天数 int count = numOfDays(this.getDay().getMonth().getYear().getValue(),this.getDay().getMonth().getValue(),this.getDay().getValue()) - numOfDays(date.getDay().getMonth().getYear().getValue(), date.getDay().getMonth().getValue(), date.getDay().getValue()); if (count < 0) count = -count; return count; public int numOfDays(int year, int month, int day) int sum = 0; for (int i = 1; i < year; i++) if (i % 4 == 0 && i % 100 != 0 || (i % 400 == 0)) sum += 366; else sum += 365; int[] months = new int[] 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; for (int i = 1; i < month; i++) if (i == 2 && year % 4 == 0 && year % 100 != 0 || (year % 400 == 0)) sum++; sum += months[i]; sum += day; return sum;
思路讲解: 我们定义了一个名为 DateUtil 的类,该类包含有年月日三个私有属性,以及构造方法、属性的getter和setter方法,以及七个方法来实现各种日期计算和比较功能。 其中, checkInputValidity() 方法 用于检测输入的年、月、日是否合法; isLeapYear() 方法用于判断某一年是否为闰年; getNextNDays() 方法用于取得某一日期的下n天日期; getPreviousNDays() 方法用于取得某一日期的前n天日期; compareDates() 方法用于比较当前日期与另一个日期的大小(先后); equalTwoDates() 方法用于判断两个日期是否相等; getDaysofDates() 方法则用于求当前日期与另一个日期之间相差的天数。 1.判断日期是否合法输入 DateUtil checkInputValidity() isLeapYear() getNextNDays() getPreviousNDays() compareDates() equalTwoDates() getDaysofDates()
年份必须在1820年到2020年之间;
月份必须在1到12之间;
日期必须在1到31之间,但不同的月份日期的最大值不同,2月最多只有28或29天,4月、6月、9月、11月最多只有30天,1月,3月,5月,7月,8月,10月,12月最多有30天。
2.比较日期是否相等:判断年月日是否相等;、
getnextnday();求下一天,当n>0,当n<month[i]-day; day=day+n;
n>m[i]-day;day=1,month=month+1,如果month=13,year=year+1;
getperiousday();当n>0,当n<day;day=day-n;
当n>day,n=n-day;day=m[j-1],month=month-1;如果month=0;month=12,year=year-1;
计算两天相差的天数:将两天和0年0月0日作差,用for循环,当天数小于date时,sum=sum+1,再用两个值相减求绝对值。就是两天相差的天数。
7-6 日期问题面向对象设计(聚合二)有题解分数 34全屏浏览题目切换布局作者 段喜龙单位 南昌航空大学参考题目7-3的要求,设计如下几个类:DateUtil、Year、Month、Day,其中年、月、日的取值范围依然为:year∈[1820,2020] ,month∈[1,12] ,day∈[1,31] , 设计类图如下:
应用程序共测试三个功能:
- 求下n天
- 求前n天
- 求两个日期相差的天数
注意:严禁使用Java中提供的任何与日期相关的类与方法,并提交完整源码,包括主类及方法(已提供,不需修改)
输入格式:
有三种输入方式(以输入的第一个数字划分[1,3]):
- 1 year month day n //测试输入日期的下n天
- 2 year month day n //测试输入日期的前n天
- 3 year1 month1 day1 year2 month2 day2 //测试两个日期之间相差的天数
输出格式:
- 当输入有误时,输出格式如下:
Wrong Format
- 当第一个数字为1且输入均有效,输出格式如下:
year1-month1-day1 next n days is:year2-month2-day2
- 当第一个数字为2且输入均有效,输出格式如下:
year1-month1-day1 previous n days is:year2-month2-day2
- 当第一个数字为3且输入均有效,输出格式如下:
<
南昌大学航天杯第二届程序设计竞赛校赛网络同步赛题解
A,C,I签到题,只搞了8题,还一题是神仙做的,我不会
链接:https://www.nowcoder.com/acm/contest/122/B
来源:牛客网取石子时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
现在有两堆石子,两个人轮流从中取石子,且每个人每一次只能取1、3或9个石子,取到最后一个石子的人win。
假设先手后手都会选择最好的方式来取石子,请您判断先后手的输赢情况。输入描述:
多组输入
每组一行,一行包括两个正整数n1和n2(1<=n1<=100,1<=n2<=100),代表了两堆石子的数目输出描述:
如果先手能赢,输出"win";否则就输出"lose"。
示例1输入
1 1 1 2
输出
lose win
分析:这题挺有搞笑,两堆加起来是奇数就win,否则lose。
1 /** 2 3 :;LaEaHKEEGpPXU7;, 4 .:75pKH11252U252XapZgRQgD6XJscLr;,. 5 :LXpRgGaX521JLw1JswJJsJs22XHPPEZEGDOMMRDOa7. 6 .r2EDDZEpZPZP6KpHX5SXH5XXa5KwaXaSX5UJ1c77sLs2GMQQ6r . 7 ,LpgOGpEZGZEZEpZKpHHU5wP5HEDgpXpHa2SSa5aSXULr7rrirrJXRBp; ;B 8 ,J6MRZH6EgEEZE6E6EZZPZXXwSSGQXr::aPpP5USUHaHaKa5Lvrr7ri;rLHBB2: Kc 9 rpQDOpPPOGGZOGOZG6GEOEOEDPPGBa. .PaSSUXSUUUaUSaKXKS177r7rrrirSBBR7 .O, 10 :UBQOKPK6ZOOOEDEO6GZE6EpEpDgDBR: UBpXHa5aSaUS5SUS5XapPHJc7rrv7rr7sgBBs .g. 11 ;gBMPXpO6GEOEOEOEGEOEE6EZEEDRGBB EB5pKSXpHKaHSX552S5aUHHEX17c7vr7777s5RBS: .R; 12 .sQBPXpDZOODOgODGOGgEDEOEOGgGgOOMB: LBKKSXSHa52aaKXHXKaa5aSaaHXSJLcL7vcc777JDBBg2;. Qi 13 ;2ggp2EDDOggGEDGgDDOgGGZDOOZOGg6gEBX vBZaHUKaaUXXXSXXKXpXHXH5wwaa52U1wssLsLJccv1UDQBQ67. O7 14 :ZZUU5PROOEOZOZGGOODZOGgODZOOgOggRgRB; ;:..R6XaKKpP6PGppKPHpHpPX5aU21UUa5Sw52UwUJJv77L77sSpQMDU; ;B5 15 ,SRJ7sSHGggEOZOEG6OODpOZgggOQQBBBBBQBBQ.,;;. LBOgOgDRDDZODMgQRgRDaa552a252UUa25w5UaU2sLvccs7r7sJZBBMr ,XQJ: 16 LQHr77J6RGOZDZOEGEDGgDRORQBBBQRDPU1Jscwa7.,::.:J7r;::::. ..,:;i7UOgRRRgDPH5SUSU52U2HHa1JJJLJLccLr71RBB, 7R2, 17 :RZv;77JSgGOZEODEDGOEggQBBBMS7;:,:,,.,.,.:7L;:,;.: ,: . ..... .:;rJU6GgGRggEZHPaKXX2S221Js1Lc7r:7QB. .XX: 18 7g1;;7rcXG6gpGDZGgZOOQBBQpr. ::::;:;:::Jr::sr;::;:.:vs,:::::::::::,, ,:7L5HGOggRgZUUU5wSUaJLc7r7BOiDr ... 19 .XX;;;irLHGKpZZZEKgDRBBB6i ,;;:;;;;r;;:s177:,;L7:;7:.rHi,:::::::::::::::::,. .,;7ZRQgO6KUUJsLwsJ7KBM. ..... 20 JZ:;rrrc5EPHp6XgpRBBBE; :i:;;;;;:;;;:c7::r7;,::::::::rv:,:::::::::::,:,:,:,,,, .;sORQRGX21wsXU: .... . 21 .Br;iir72EHPHZ6EgBBR7. ..;ii:;;;;;;;;;:71r::.:7, .::7;:;H;.::,:j::::::,:::::,,,::,,, ,7wEDRZBMr ....... 22 1D;:r;rwOPXPKH6BBX, .:;:;;;:::;:;;;;;::Ls,;ss..r. ,c77;sLU,:,:::,:::,:,:,:,,,:,,,:::. .:.rP:....... 23 D2:i;rJpKHXHXgg7 .,,::::;:::::;:;:;;:;SL7sS2, :. ::::,:U7.:::,:::,:,,,,,:,,.,,,.,:, ;L:. .. ... 24 :Qc;i7LGZPa6gBM, ...,,::::::::::::;;::;.JJ;ic: ;:::,v1,.:::;7,,,:,:,:,,,,.:,,,,.. :2wr. ....... 25 sRr:rrwZGgBQR7. .,,::::::::::::::;::;:::Hr:7i ,;;:::U: .,,,:r.,,:,:,:,,,:,,,..... 7K2:. .......... 26 OX:irsXgQZ:. .,,:::,,:::,::::::::;;;::r5;r7: :;;;:7L ..,.,;:,:,:,,,:,:,,,,...... .rU6w;.............. 27 .BJ71EK5;. .,,::,:,:,,,:,:,::::::::;:;.Ls;r7 :;:::s, ..,,,r:.:.,,,.:, .,..... . .;s5XJr,..,............. 28 1Mv::. .:,:,,,,,,,:::::::,;:::;:;::..J7;c: ,. ,rri:27 , .,:;. ,:,:,,:..,.... .rpPL;:.. ... ............. 29 ..7Ls: .,,,:,,,:,:,:::,:,:::::,:::::: .Srrr, .,:;;;::::..:7r;r1 .: :E:..,,:,...,,.., ..XBQ7, ................... .. 30 ,;7v7r7:, ,,,,:.,,,,,,:,,::,:,,.::.,:.,:, :Jrr; ,r7,:.. ,:::L: . .7RJ .,.:.,......,,:MBs ..............,........ 31 .:;vJs7i, ,,,., ..,,:,,,:,,,:,:.,rs,,.:,, ;J;c, .,::;; Lr.E: .,...,....:,:1Z: .........,.,...........:,. 32 .;,,:r7J1wv;,. ....,.:. .,.,,:,,,:,,::::,sS;.:::, cLrr. . .,. .,..: ;; r5 ........,,:;s7. ....,.,.,...........,.,.,,. 33 ,BBs::: . ........,.,,,,,.:,,,:,:,,.;s7r,,,,, cc7; ,.,,. .:7rrJGMPOEL1, ..... ,,:rSr, : ,.,.,.,.,.........,,,,,. .. 34 rZL. ....... ..,,,.,,,..,,,.,;,...7J:s: .. .wr7, ... .rJpQBBBBBBBQgKP77s .. .,7S2,,....,....,.,.,......,,.,. .:cX2 35 ;SH7, . . . .. .,.,.,.,,,...,..r, ::Ur;7L . .57;. .rPBBQBBBPws:;r::::.,:P. .;S5;,..,...,.,.,.,.... ..,,, ..,7HSJvr 36 r7r;: . ... ..........,...,.. 7L;,rS;;ivr . 1r: . .rZBBK7;.JL,::Jrs;.:;,:;J, .,;LDv..:.,...,.,.,.,...,.,,:,, ,7sKGwc77; 37 .:7L7:, . ,r,..,.,,,...,..:iLL 7s;r;cv: U7. :vi;:. .. :Er:::.Ls. . ,7::::vHEi ,:,,.,,,.,.,,,,,,::::, .:1QBKJJUsssc 38 .:rvw1JsL7;, ,;..........,.:ir :r .ELr77v:,. Pr .. . Ls ,w. rr.r:JPr. ::,..,,,.,,,,:,:::,:,..7XgRE52US25w1c 39 .:;7JRQpX: ; .........,i: .,J ;gri;7r : 1; .X: . ,v :aK1, ,,:.,,,.,,,,:::::,;::::cOBB6K55UXUX5XUw 40 ;J,XQB7,: . ...,: .:7Z.7Zi7;r: , v, :w:;,.,:::7LUsc:..:,:.:,,,,,:,:::::::,:;c5BBPS5wSUSUaUaUa2 41 J7 rEBBg..,. ..... . ,L1PLKr:,:;r;;::, :, :;SXsJU1XLLr....:,,,,,,::::,::::::,::LL,,rZXUJU25552aUUUU 42 JL .:sXBB:... ., . ,OH777;,rZRBBBQL ..r, ,:r7::r:,;;....:,,,,,,,,.::::;::;:::.7gL UK2UUS1aw2wU25J 43 U7 .r71BB; . :.. .. :QJ;.;1pBBBBBGRBRi i: . .w7. ..,,:,,,,,:,:,:::::::,.,2BR: .DSaUSUUS525w5U1 44 2r :7rJBQ7 .;. . KL::JGBBBgE6Hp6XMQ; . ... ,2s ,,,,:::::,:::::::,,.:sQQB2 ;DHa5U52S2U25USJ 45 a: :7;1BB2 .v, sL;LPQgDBPH6KPQBpGBG . ... .. aP:. .. ,::,:::::,,,,.;rSgBQDa; :gSSwSUUU525US2U 46 5; ;;r2QBB, .s: :a7:PBZ2,:BEaZPKgBZOgB, . ...:LEHri::,:.,,.,,,::rsXRBgGKEJi, 2GH252SUS5S11wH5 47 U: ;:rwDBBr .c, rB6r 167.,,RQPpEP6OpKEBc ., . : ::sS7;cKB6HHa1XOQRRQBRgEZDBH; .. ;RZUPSSU525USSpK2 48 s; ;::aBg, .; .Gv,H::,,::,;BQDOGHPXpKBs .,. . .,. .r:;:6gOEBQRRRDggQgOHgMGL, .;PEHHXaaKaPXPKPaXS 49 s7.:,sBa :..S, vE::::; 7BBMgZH6pQBr . ,:, ,.,r2RHSSpMZPKRRZpgggav, ;UpEZaaaKHHUHPPaUJHGO 50 a;.775: .::rU. gR:,:. :;:BBBBQar . ,, ,.,7rggJwU6DDGMgOGgXc:, ,rPGOpKSXSXSKUKHU1UHgOEP 51 1i :SZJrLXpBBMRB: .v Ba,. :sv: . irsBUSpEEGPPpg65r:..,;sKZDZHSX5XaHU55K2wUGMRZ6Z6 52 :K :7asvwc2MgEQB, :gg.:iB7 .,,,:. ...,. . .. .:iM6GEpSSXZOEs:...;spZpKKXXSX5Xa5Ja5wwKGQDEpp6OZ 53 w; ,LXLr77sLwL5aR. gRgQgaQBi ,vJwvi,. .;;:;7: . . ,... rRDRJUSXpgas:,.:;U66SaHa2X5aUa552X12SgQgpZpEpGOD 54 H: ;XJ;77rv7rJUaQ;rgaPgXXHBB; . . .ri:;; ,: . :6QZEKHXpXXL:,::r1PKXaa2XSS5a5S5UJ22aOBgEpOppZOOgG 55 iwsJsr7rsLrrLcJ2gQGXHwa1SUHBB: . ... . .., : 1BRKpOEGp2Jr;::rsXP1Uaa2U5a5aUa5SsSpgQRZGZEEZZOOgDg 56 ,cs5aXaP552ssLwRSHXaSS5asXBB. . . . LBBgGgZHsr;vrr;rcXpP5UUS5X5S2XS5SS1URBggpEZgDDGOGggRD 57 ,;irrs2KgQRPJJJSUXKXSHJpBM . . . ZBBOUsr;:. ,,,rHgZPUaSaUSUSSXaUPXsSBB6ZZp6EEGOOGDEggO 58 ;BBQQZaSJ5J15SJDQ7 .iEBL:. . .,:,:;SRQGZXPXXSHaS2UUSUSswQB6OZgG6pZZGODEOGDE 59 JgUri1aGEpEpXSS5LBQ, .rLap2Jr ;712OO6ZggRDZXHXpKK2211LLLc7wgBa2PODRGE6OZgDgGDGD 60 7QB; ,Jc76DaZXOZgDPEBBX, :c1HEZ1c;:,.,:;cHDgQQggMZgGOZO6OEGpXsLLsJXHPOBBBc;vss5EMggZDODOgED6 61 LZJ::iwrrr72EPgXU5OBBBBBBBp7: .i5P6wL;, .:LS6DMgMgZKgEOPOGGDDGEXULvLSOBBBBBQBgDQDJ5rrr7JOQQDDZGEgDD 62 wp rR5, .HQRX7r72RQBBBBBQBMEK6Uc7sc7cHOU:, .:LHgOQg6ZOPZpZGGEDERZPwcr7LKDDaJr:. rBX;;:r:ir1DBQMgRgDp 63 7D,sw: , Z. .LgBBQBBOsJaQBBBBBBXrr. .:rwZBBQgROgDgDOERRMgROOScrLsPP5r, 7Qs,::::::rUgRgZOG6 64 ,Q57:r ,: ,r U: .;; .vL7L;r:UG7.:sr;JSgQBgDEZXXUSXpHa21svr7r7s2v:. iQK...:,:::;LLJJws 65 OBHs;. :;;,v H: :6X; rpL;7pSrrr7r;::,....,,:;iirrvvvr, :BBPs;;:,,,,::;:: 66 ::rPDEL:..7:c;7r pK .: :KL.:r:.. ..:icsS5sr:,. JgGgBQDOSJss77r 67 :r;::: , PH r, ,;5: ,::::;7Ls7Lc7;: ,:7JP17rJUs 68 .:J: :; .,:K6BQS7:.,.,. 69 :r7Ji;r7;::;;. 70 . **/ 71 72 #include <bits/stdc++.h> 73 using namespace std; 74 75 #define FFI(a, b) for(int i = a; i < b; i++) 76 #define FFJ(a, b) for(int j = a; j < b; j++) 77 #define RR(a, b) for(int i = a; i > b; i++) 78 #define ME(a, b) memset(a, b, sizeof(a)) 79 #define SC(x) scanf("%d", &x) 80 #define PR(x) printf("%d\n", x) 81 #define INF 0x3f3f3f3f 82 #define MAX 1001 83 #define MOD 1000000007 84 #define E 2.71828182845 85 #define M 8 86 #define N 6 87 typedef long long LL; 88 const double PI = acos(-1.0); 89 typedef pair<int, int> Author; 90 vector<pair<string, int> > VP; 91 92 int main(void){ 93 #ifdef LOCAL 94 freopen("in.txt", "r", stdin); 95 freopen("out.txt", "w", stdout); 96 #endif 97 ios::sync_with_stdio(false); cin.tie(0); 98 int a, b; 99 100 while(cin>>a>>b){ 101 if((a + b) % 2) cout<<"win"<<endl; 102 else cout<<"lose"<<endl; 103 } 104 return EXIT_SUCCESS; 105 }
链接:https://www.nowcoder.com/acm/contest/122/D
来源:牛客网小C的记事本时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
小C最近学会了java小程序的开发,他很开心,于是想做一个简单的记事本程序练练手。
他希望他的记事本包含以下功能:
1、append(str),向记事本插入字符串 str(英文字符)
2、delete(k),删除记事本最后k个字符(保证不为空串)
3、print(k),输出记事本第k个字符(保证不为空串)
4、undo(),撤销最近的1(或者)操作,使记事本回到1(或者2)操作之前的状态
可怜的小C琢磨了半天还是做不来,聪明的你能解决小C的问题吗?输入描述:
多组输入
第一行输入一个整数q,代表操作总数
以下q行每行描述了一个操作,每行以一个整数t开始(1 <= t <= 4)。
t表示上述问题陈述中定义的操作类型。 如果操作需要参数,则后跟空格分隔的参数。
题目保证所有操作均合法
1 <= q <= 10^6
1 <= k <= |记事本内容长度|
每个测试数据中str的总长度 <= 10^6
请使用 ios::sync_with_stdio(false); 对读写进行加速输出描述:
所有操作类型3必须输出第k个字符,每行以换行符结束。
示例1输入
8 1 ab 3 2 2 2 1 cd 3 1 4 4 3 1
输出
b c a
说明
**样例解释**
假设记事本用字符串S表示
1、插入ab,S="ab"
2、输出第2个字符,是b
3、删除最后2个字符,S=""
4、插入cd, S="cd"
5、输出第1个字符,是c
6、撤销,此时S=""
7、撤销,此时S="ab"
8、输出第1个字符,是a分析:这题很实用啊,现在都很喜欢回到上一步,和武大校赛那题有点像,不过这里是用stack解决的,因为可以回到之前所有的步骤,
和电脑上ctrl+z有点像,每次保存/删除输入字符串,str += str1,对于1,2进行一步操作就压栈,最后s.pop(),即可
1 /** 2 3 :;LaEaHKEEGpPXU7;, 4 .:75pKH11252U252XapZgRQgD6XJscLr;,. 5 :LXpRgGaX521JLw1JswJJsJs22XHPPEZEGDOMMRDOa7. 6 .r2EDDZEpZPZP6KpHX5SXH5XXa5KwaXaSX5UJ1c77sLs2GMQQ6r . 7 ,LpgOGpEZGZEZEpZKpHHU5wP5HEDgpXpHa2SSa5aSXULr7rrirrJXRBp; ;B 8 ,J6MRZH6EgEEZE6E6EZZPZXXwSSGQXr::aPpP5USUHaHaKa5Lvrr7ri;rLHBB2: Kc 9 rpQDOpPPOGGZOGOZG6GEOEOEDPPGBa. .PaSSUXSUUUaUSaKXKS177r7rrrirSBBR7 .O, 10 :UBQOKPK6ZOOOEDEO6GZE6EpEpDgDBR: UBpXHa5aSaUS5SUS5XapPHJc7rrv7rr7sgBBs .g. 11 ;gBMPXpO6GEOEOEOEGEOEE6EZEEDRGBB EB5pKSXpHKaHSX552S5aUHHEX17c7vr7777s5RBS: .R; 12 .sQBPXpDZOODOgODGOGgEDEOEOGgGgOOMB: LBKKSXSHa52aaKXHXKaa5aSaaHXSJLcL7vcc777JDBBg2;. Qi 13 ;2ggp2EDDOggGEDGgDDOgGGZDOOZOGg6gEBX vBZaHUKaaUXXXSXXKXpXHXH5wwaa52U1wssLsLJccv1UDQBQ67. O7 14 :ZZUU5PROOEOZOZGGOODZOGgODZOOgOggRgRB; ;:..R6XaKKpP6PGppKPHpHpPX5aU21UUa5Sw52UwUJJv77L77sSpQMDU; ;B5 15 ,SRJ7sSHGggEOZOEG6OODpOZgggOQQBBBBBQBBQ.,;;. LBOgOgDRDDZODMgQRgRDaa552a252UUa25w5UaU2sLvccs7r7sJZBBMr ,XQJ: 16 LQHr77J6RGOZDZOEGEDGgDRORQBBBQRDPU1Jscwa7.,::.:J7r;::::. ..,:;i7UOgRRRgDPH5SUSU52U2HHa1JJJLJLccLr71RBB, 7R2, 17 :RZv;77JSgGOZEODEDGOEggQBBBMS7;:,:,,.,.,.:7L;:,;.: ,: . ..... .:;rJU6GgGRggEZHPaKXX2S221Js1Lc7r:7QB. .XX: 18 7g1;;7rcXG6gpGDZGgZOOQBBQpr. ::::;:;:::Jr::sr;::;:.:vs,:::::::::::,, ,:7L5HGOggRgZUUU5wSUaJLc7r7BOiDr ... 19 .XX;;;irLHGKpZZZEKgDRBBB6i ,;;:;;;;r;;:s177:,;L7:;7:.rHi,:::::::::::::::::,. .,;7ZRQgO6KUUJsLwsJ7KBM. ..... 20 JZ:;rrrc5EPHp6XgpRBBBE; :i:;;;;;:;;;:c7::r7;,::::::::rv:,:::::::::::,:,:,:,,,, .;sORQRGX21wsXU: .... . 21 .Br;iir72EHPHZ6EgBBR7. ..;ii:;;;;;;;;;:71r::.:7, .::7;:;H;.::,:j::::::,:::::,,,::,,, ,7wEDRZBMr ....... 22 1D;:r;rwOPXPKH6BBX, .:;:;;;:::;:;;;;;::Ls,;ss..r. ,c77;sLU,:,:::,:::,:,:,:,,,:,,,:::. .:.rP:....... 23 D2:i;rJpKHXHXgg7 .,,::::;:::::;:;:;;:;SL7sS2, :. ::::,:U7.:::,:::,:,,,,,:,,.,,,.,:, ;L:. .. ... 24 :Qc;i7LGZPa6gBM, ...,,::::::::::::;;::;.JJ;ic: ;:::,v1,.:::;7,,,:,:,:,,,,.:,,,,.. :2wr. ....... 25 sRr:rrwZGgBQR7. .,,::::::::::::::;::;:::Hr:7i ,;;:::U: .,,,:r.,,:,:,:,,,:,,,..... 7K2:. .......... 26 OX:irsXgQZ:. .,,:::,,:::,::::::::;;;::r5;r7: :;;;:7L ..,.,;:,:,:,,,:,:,,,,...... .rU6w;.............. 27 .BJ71EK5;. .,,::,:,:,,,:,:,::::::::;:;.Ls;r7 :;:::s, ..,,,r:.:.,,,.:, .,..... . .;s5XJr,..,............. 28 1Mv::. .:,:,,,,,,,:::::::,;:::;:;::..J7;c: ,. ,rri:27 , .,:;. ,:,:,,:..,.... .rpPL;:.. ... ............. 29 ..7Ls: .,,,:,,,:,:,:::,:,:::::,:::::: .Srrr, .,:;;;::::..:7r;r1 .: :E:..,,:,...,,.., ..XBQ7, ................... .. 30 ,;7v7r7:, ,,,,:.,,,,,,:,,::,:,,.::.,:.,:, :Jrr; ,r7,:.. ,:::L: . .7RJ .,.:.,......,,:MBs ..............,........ 31 .:;vJs7i, ,,,., ..,,:,,,:,,,:,:.,rs,,.:,, ;J;c, .,::;; Lr.E: .,...,....:,:1Z: .........,.,...........:,. 32 .;,,:r7J1wv;,. ....,.:. .,.,,:,,,:,,::::,sS;.:::, cLrr. . .,. .,..: ;; r5 ........,,:;s7. ....,.,.,...........,.,.,,. 33 ,BBs::: . ........,.,,,,,.:,,,:,:,,.;s7r,,,,, cc7; ,.,,. .:7rrJGMPOEL1, ..... ,,:rSr, : ,.,.,.,.,.........,,,,,. .. 34 rZL. ....... ..,,,.,,,..,,,.,;,...7J:s: .. .wr7, ... .rJpQBBBBBBBQgKP77s .. .,7S2,,....,....,.,.,......,,.,. .:cX2 35 ;SH7, . . . .. .,.,.,.,,,...,..r, ::Ur;7L . .57;. .rPBBQBBBPws:;r::::.,:P. .;S5;,..,...,.,.,.,.... ..,,, ..,7HSJvr 36 r7r;: . ... ..........,...,.. 7L;,rS;;ivr . 1r: . .rZBBK7;.JL,::Jrs;.:;,:;J, .,;LDv..:.,...,.,.,.,...,.,,:,, ,7sKGwc77; 37 .:7L7:, . ,r,..,.,,,...,..:iLL 7s;r;cv: U7. :vi;:. .. :Er:::.Ls. . ,7::::vHEi ,:,,.,,,.,.,,,,,,::::, .:1QBKJJUsssc 38 .:rvw1JsL7;, ,;..........,.:ir :r .ELr77v:,. Pr .. . Ls ,w. rr.r:JPr. ::,..,,,.,,,,:,:::,:,..7XgRE52US25w1c 39 .:;7JRQpX: ; .........,i: .,J ;gri;7r : 1; .X: . ,v :aK1, ,,:.,,,.,,,,:::::,;::::cOBB6K55UXUX5XUw 40 ;J,XQB7,: . ...,: .:7Z.7Zi7;r: , v, :w:;,.,:::7LUsc:..:,:.:,,,,,:,:::::::,:;c5BBPS5wSUSUaUaUa2 41 J7 rEBBg..,. ..... . ,L1PLKr:,:;r;;::, :, :;SXsJU1XLLr....:,,,,,,::::,::::::,::LL,,rZXUJU25552aUUUU 42 JL .:sXBB:... ., . ,OH777;,rZRBBBQL ..r, ,:r7::r:,;;....:,,,,,,,,.::::;::;:::.7gL UK2UUS1aw2wU25J 43 U7 .r71BB; . :.. .. :QJ;.;1pBBBBBGRBRi i: . .w7. ..,,:,,,,,:,:,:::::::,.,2BR: .DSaUSUUS525w5U1 44 2r :7rJBQ7 .;. . KL::JGBBBgE6Hp6XMQ; . ... ,2s ,,,,:::::,:::::::,,.:sQQB2 ;DHa5U52S2U25USJ 45 a: :7;1BB2 .v, sL;LPQgDBPH6KPQBpGBG . ... .. aP:. .. ,::,:::::,,,,.;rSgBQDa; :gSSwSUUU525US2U 46 5; ;;r2QBB, .s: :a7:PBZ2,:BEaZPKgBZOgB, . ...:LEHri::,:.,,.,,,::rsXRBgGKEJi, 2GH252SUS5S11wH5 47 U: ;:rwDBBr .c, rB6r 167.,,RQPpEP6OpKEBc ., . : ::sS7;cKB6HHa1XOQRRQBRgEZDBH; .. ;RZUPSSU525USSpK2 48 s; ;::aBg, .; .Gv,H::,,::,;BQDOGHPXpKBs .,. . .,. .r:;:6gOEBQRRRDggQgOHgMGL, .;PEHHXaaKaPXPKPaXS 49 s7.:,sBa :..S, vE::::; 7BBMgZH6pQBr . ,:, ,.,r2RHSSpMZPKRRZpgggav, ;UpEZaaaKHHUHPPaUJHGO 50 a;.775: .::rU. gR:,:. :;:BBBBQar . ,, ,.,7rggJwU6DDGMgOGgXc:, ,rPGOpKSXSXSKUKHU1UHgOEP 51 1i :SZJrLXpBBMRB: .v Ba,. :sv: . irsBUSpEEGPPpg65r:..,;sKZDZHSX5XaHU55K2wUGMRZ6Z6 52 :K :7asvwc2MgEQB, :gg.:iB7 .,,,:. ...,. . .. .:iM6GEpSSXZOEs:...;spZpKKXXSX5Xa5Ja5wwKGQDEpp6OZ 53 w; ,LXLr77sLwL5aR. gRgQgaQBi ,vJwvi,. .;;:;7: . . ,... rRDRJUSXpgas:,.:;U66SaHa2X5aUa552X12SgQgpZpEpGOD 54 H: ;XJ;77rv7rJUaQ;rgaPgXXHBB; . . .ri:;; ,: . :6QZEKHXpXXL:,::r1PKXaa2XSS5a5S5UJ22aOBgEpOppZOOgG 55 iwsJsr7rsLrrLcJ2gQGXHwa1SUHBB: . ... . .., : 1BRKpOEGp2Jr;::rsXP1Uaa2U5a5aUa5SsSpgQRZGZEEZZOOgDg 56 ,cs5aXaP552ssLwRSHXaSS5asXBB. . . . LBBgGgZHsr;vrr;rcXpP5UUS5X5S2XS5SS1URBggpEZgDDGOGggRD 57 ,;irrs2KgQRPJJJSUXKXSHJpBM . . . ZBBOUsr;:. ,,,rHgZPUaSaUSUSSXaUPXsSBB6ZZp6EEGOOGDEggO 58 ;BBQQZaSJ5J15SJDQ7 .iEBL:. . .,:,:;SRQGZXPXXSHaS2UUSUSswQB6OZgG6pZZGODEOGDE 59 JgUri1aGEpEpXSS5LBQ, .rLap2Jr ;712OO6ZggRDZXHXpKK2211LLLc7wgBa2PODRGE6OZgDgGDGD 60 7QB; ,Jc76DaZXOZgDPEBBX, :c1HEZ1c;:,.,:;cHDgQQggMZgGOZO6OEGpXsLLsJXHPOBBBc;vss5EMggZDODOgED6 61 LZJ::iwrrr72EPgXU5OBBBBBBBp7: .i5P6wL;, .:LS6DMgMgZKgEOPOGGDDGEXULvLSOBBBBBQBgDQDJ5rrr7JOQQDDZGEgDD 62 wp rR5, .HQRX7r72RQBBBBBQBMEK6Uc7sc7cHOU:, .:LHgOQg6ZOPZpZGGEDERZPwcr7LKDDaJr:. rBX;;:r:ir1DBQMgRgDp 63 7D,sw: , Z. .LgBBQBBOsJaQBBBBBBXrr. .:rwZBBQgROgDgDOERRMgROOScrLsPP5r, 7Qs,::::::rUgRgZOG6 64 ,Q57:r ,: ,r U: .;; .vL7L;r:UG7.:sr;JSgQBgDEZXXUSXpHa21svr7r7s2v:. iQK...:,:::;LLJJws 65 OBHs;. :;;,v H: :6X; rpL;7pSrrr7r;::,....,,:;iirrvvvr, :BBPs;;:,,,,::;:: 66 ::rPDEL:..7:c;7r pK .: :KL.:r:.. ..:icsS5sr:,. JgGgBQDOSJss77r 67 :r;::: , PH r, ,;5: ,::::;7Ls7Lc7;: ,:7JP17rJUs 68 .:J: :; .,:K6BQS7:.,.,. 69 :r7Ji;r7;::;;. 70 . **/ 71 72 #include <bits/stdc++.h> 73 using namespace std; 74 75 #define FFI(a, b) for(int i = a; i < b; i++) 76 #define FFJ(a, b) for(int j = a; j < b; j++) 77 #define RR(a, b) for(int i = a; i > b; i++) 78 #define ME(a, b) memset(a, b, sizeof(a)) 79 #define SC(x) scanf("%d", &x) 80 #define PR(x) printf("%d\n", x) 81 #define INF 0x3f3f3f3f 82 #define MAX 1001 83 #define MOD 1000000007 84 #define E 2.71828182845 85 #define M 8 86 #define N 6 87 typedef long long LL; 88 const double PI = acos(-1.0); 89 typedef pair<int, int> Author; 90 vector<pair<string, int> > VP; 91 92 int main(void){ 93 #ifdef LOCAL 94 freopen("in.txt", "r", stdin); 95 freopen("out.txt", "w", stdout); 96 #endif 97 ios::sync_with_stdio(false); cin.tie(0); 98 int n, command, temp;string str, str1; 99 100 while(cin>>n){ 101 stack<string> s; str = "";s.push(str); 102 while(n--){ 103 cin>>command; 104 if(command == 1){ 105 cin>>str1; 106 str += str1; 107 s.push(str); 108 } 109 else if(command == 2){ 110 cin>>temp; 111 str.erase(str.size() - temp, temp); 112 s.push(str); 113 } 114 else if(command == 3){ 115 cin>>temp; 116 cout<<str[temp - 1]<<endl; 117 } 118 else{ 119 s.pop(); 120 str = s.top(); 121 } 122 } 123 } 124 125 return EXIT_SUCCESS; 126 }
链接:https://www.nowcoder.com/acm/contest/122/F
来源:牛客网阿汤的疑惑时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
阿汤同学最近刚学数论,他发现数论实在是太有趣了,于是他想让你也感受一下数论的乐趣。现在他给你一个正整数 N 和一个正整数 M,要求你用 N 对 M 进行取余操作,即 N % M,记余数为 S。
但是他发现这样好像并不能让你感受到数论的乐趣,于是他想让你在N 对 M 取余操作的基础上再求出这个余数 S 能分解出多少个不同质因数。
质因数:质因数在数论里是指能整除给定正整数的质数,质数就是只能整除 1 和本身的数,定义 2 是最小的质数。输入描述:
从标准输入读入数据。
输入包含多组数据,第一行一个整数 T 代表数据组数。接下来依
次描述每组数据,对于每组数据:
第一行输入正整数 N,第二行输入正整数 M
【数据规模】
1≤N≤10^100
1≤M≤2^31-1输出描述:
输出到标准输出。
对于每组数据,输出一行:
余数 S 能分解出的不同质因数的个数。示例1输入
2 68 40 6 180
输出
2 2
分析:现在题目都好考思维了,求余数简单,题目就是求s有多少素数,它可以整除.
1 /** 2 3 :;LaEaHKEEGpPXU7;, 4 .:75pKH11252U252XapZgRQgD6XJscLr;,. 5 :LXpRgGaX521JLw1JswJJsJs22XHPPEZEGDOMMRDOa7. 6 .r2EDDZEpZPZP6KpHX5SXH5XXa5KwaXaSX5UJ1c77sLs2GMQQ6r . 7 ,LpgOGpEZGZEZEpZKpHHU5wP5HEDgpXpHa2SSa5aSXULr7rrirrJXRBp; ;B 8 ,J6MRZH6EgEEZE6E6EZZPZXXwSSGQXr::aPpP5USUHaHaKa5Lvrr7ri;rLHBB2: Kc 9 rpQDOpPPOGGZOGOZG6GEOEOEDPPGBa. .PaSSUXSUUUaUSaKXKS177r7rrrirSBBR7 .O, 10 :UBQOKPK6ZOOOEDEO6GZE6EpEpDgDBR: UBpXHa5aSaUS5SUS5XapPHJc7rrv7rr7sgBBs .g. 11 ;gBMPXpO6GEOEOEOEGEOEE6EZEEDRGBB EB5pKSXpHKaHSX552S5aUHHEX17c7vr7777s5RBS: .R; 12 .sQBPXpDZOODOgODGOGgEDEOEOGgGgOOMB: LBKKSXSHa52aaKXHXKaa5aSaaHXSJLcL7vcc777JDBBg2;. Qi 13 ;2ggp2EDDOggGEDGgDDOgGGZDOOZOGg6gEBX vBZaHUKaaUXXXSXXKXpXHXH5wwaa52U1wssLsLJccv1UDQBQ67. O7 14 :ZZUU5PROOEOZOZGGOODZOGgODZOOgOggRgRB; ;:..R6XaKKpP6PGppKPHpHpPX5aU21UUa5Sw52UwUJJv77L77sSpQMDU; ;B5 15 ,SRJ7sSHGggEOZOEG6OODpOZgggOQQBBBBBQBBQ.,;;. LBOgOgDRDDZODMgQRgRDaa552a252UUa25w5UaU2sLvccs7r7sJZBBMr ,XQJ: 16 LQHr77J6RGOZDZOEGEDGgDRORQBBBQRDPU1Jscwa7.,::.:J7r;::::. ..,:;i7UOgRRRgDPH5SUSU52U2HHa1JJJLJLccLr71RBB, 7R2, 17 :RZv;77JSgGOZEODEDGOEggQBBBMS7;:,:,,.,.,.:7L;:,;.: ,: . ..... .:;rJU6GgGRggEZHPaKXX2S221Js1Lc7r:7QB. .XX: 18 7g1;;7rcXG6gpGDZGgZOOQBBQpr. ::::;:;:::Jr::sr;::;:.:vs,:::::::::::,, ,:7L5HGOggRgZUUU5wSUaJLc7r7BOiDr ... 19 .XX;;;irLHGKpZZZEKgDRBBB6i ,;;:;;;;r;;:s177:,;L7:;7:.rHi,:::::::::::::::::,. .,;7ZRQgO6KUUJsLwsJ7KBM. ..... 20 JZ:;rrrc5EPHp6XgpRBBBE; :i:;;;;;:;;;:c7::r7;,::::::::rv:,:::::::::::,:,:,:,,,, .;sORQRGX21wsXU: .... . 21 .Br;iir72EHPHZ6EgBBR7. ..;ii:;;;;;;;;;:71r::.:7, .::7;:;H;.::,:j::::::,:::::,,,::,,, ,7wEDRZBMr ....... 22 1D;:r;rwOPXPKH6BBX, .:;:;;;:::;:;;;;;::Ls,;ss..r. ,c77;sLU,:,:::,:::,:,:,:,,,:,,,:::. .:.rP:....... 23 D2:i;rJpKHXHXgg7 .,,::::;:::::;:;:;;:;SL7sS2, :. ::::,:U7.:::,:::,:,,,,,:,,.,,,.,:, ;L:. .. ... 24 :Qc;i7LGZPa6gBM, ...,,::::::::::::;;::;.JJ;ic: ;:::,v1,.:::;7,,,:,:,:,,,,.:,,,,.. :2wr. ....... 25 sRr:rrwZGgBQR7. .,,::::::::::::::;::;:::Hr:7i ,;;:::U: .,,,:r.,,:,:,:,,,:,,,..... 7K2:. .......... 26 OX:irsXgQZ:. .,,:::,,:::,::::::::;;;::r5;r7: :;;;:7L ..,.,;:,:,:,,,:,:,,,,...... .rU6w;.............. 27 .BJ71EK5;. .,,::,:,:,,,:,:,::::::::;:;.Ls;r7 :;:::s, ..,,,r:.:.,,,.:, .,..... . .;s5XJr,..,............. 28 1Mv::. .:,:,,,,,,,:::::::,;:::;:;::..J7;c: ,. ,rri:27 , .,:;. ,:,:,,:..,.... .rpPL;:.. ... ............. 29 ..7Ls: .,,,:,,,:,:,:::,:,:::::,:::::: .Srrr, .,:;;;::::..:7r;r1 .: :E:..,,:,...,,.., ..XBQ7, ................... .. 30 ,;7v7r7:, ,,,,:.,,,,,,:,,::,:,,.::.,:.,:, :Jrr; ,r7,:.. ,:::L: . .7RJ .,.:.,......,,:MBs ..............,........ 31 .:;vJs7i, ,,,., ..,,:,,,:,,,:,:.,rs,,.:,, ;J;c, .,::;; Lr.E: .,...,....:,:1Z: .........,.,...........:,. 32 .;,,:r7J1wv;,. ....,.:. .,.,,:,,,:,,::::,sS;.:::, cLrr. . .,. .,..: ;; r5 ........,,:;s7. ....,.,.,...........,.,.,,. 33 ,BBs::: . ........,.,,,,,.:,,,:,:,,.;s7r,,,,, cc7; ,.,,. .:7rrJGMPOEL1, ..... ,,:rSr, : ,.,.,.,.,.........,,,,,. .. 34 rZL. ....... ..,,,.,,,..,,,.,;,...7J:s: .. .wr7, ... .rJpQBBBBBBBQgKP77s .. .,7S2,,....,....,.,.,......,,.,. .:cX2 35 ;SH7, . . . .. .,.,.,.,,,...,..r, ::Ur;7L . .57;. .rPBBQBBBPws:;r::::.,:P. .;S5;,..,...,.,.,.,.... ..,,, ..,7HSJvr 36 r7r;: . ... ..........,...,.. 7L;,rS;;ivr . 1r: . .rZBBK7;.JL,::Jrs;.:;,:;J, .,;LDv..:.,...,.,.,.,...,.,,:,, ,7sKGwc77; 37 .:7L7:, . ,r,..,.,,,...,..:iLL 7s;r;cv: U7. :vi;:. .. :Er:::.Ls. . ,7::::vHEi ,:,,.,,,.,.,,,,,,::::, .:1QBKJJUsssc 38 .:rvw1JsL7;, ,;..........,.:ir :r .ELr77v:,. Pr .. . Ls ,w. rr.r:JPr. ::,..,,,.,,,,:,:::,:,..7XgRE52US25w1c 39 .:;7JRQpX: ; .........,i: .,J ;gri;7r : 1; .X: . ,v :aK1, ,,:.,,,.,,,,:::::,;::::cOBB6K55UXUX5XUw 40 ;J,XQB7,: . ...,: .:7Z.7Zi7;r: , v, :w:;,.,:::7LUsc:..:,:.:,,,,,:,:::::::,:;c5BBPS5wSUSUaUaUa2 41 J7 rEBBg..,. ..... . ,L1PLKr:,:;r;;::, :, :;SXsJU1XLLr....:,,,,,,::::,::::::,::LL,,rZXUJU25552aUUUU 42 JL .:sXBB:... ., . ,OH777;,rZRBBBQL ..r, ,:r7::r:,;;....:,,,,,,,,.::::;::;:::.7gL UK2UUS1aw2wU25J 43 U7 .r71BB; . :.. .. :QJ;.;1pBBBBBGRBRi i: . .w7. ..,,:,,,,,:,:,:::::::,.,2BR: .DSaUSUUS525w5U1 44 2r :7rJBQ7 .;. . KL::JGBBBgE6Hp6XMQ; . ... ,2s ,,,,:::::,:::::::,,.:sQQB2 ;DHa5U52S2U25USJ 45 a: :7;1BB2 .v, sL;LPQgDBPH6KPQBpGBG . ... .. aP:. .. ,::,:::::,,,,.;rSgBQDa; :gSSwSUUU525US2U 46 5; ;;r2QBB, .s: :a7:PBZ2,:BEaZPKgBZOgB, . ...:LEHri::,:.,,.,,,::rsXRBgGKEJi, 2GH252SUS5S11wH5 47 U: ;:rwDBBr .c, rB6r 167.,,RQPpEP6OpKEBc ., . : ::sS7;cKB6HHa1XOQRRQBRgEZDBH; .. ;RZUPSSU525USSpK2 48 s; ;::aBg, .; .Gv,H::,,::,;BQDOGHPXpKBs .,. . .,. .r:;:6gOEBQRRRDggQgOHgMGL, .;PEHHXaaKaPXPKPaXS 49 s7.:,sBa :..S, vE::::; 7BBMgZH6pQBr . ,:, ,.,r2RHSSpMZPKRRZpgggav, ;UpEZaaaKHHUHPPaUJHGO 50 a;.775: .::rU. gR:,:. :;:BBBBQar . ,, ,.,7rggJwU6DDGMgOGgXc:, ,rPGOpKSXSXSKUKHU1UHgOEP 51 1i :SZJrLXpBBMRB: .v Ba,. :sv: . irsBUSpEEGPPpg65r:..,;sKZDZHSX5XaHU55K2wUGMRZ6Z6 52 :K :7asvwc2MgEQB, :gg.:iB7 .,,,:. ...,. . .. .:iM6GEpSSXZOEs:...;spZpKKXXSX5Xa5Ja5wwKGQDEpp6OZ 53 w; ,LXLr77sLwL5aR. gRgQgaQBi ,vJwvi,. .;;:;7: . . ,... rRDRJUSXpgas:,.:;U66SaHa2X5aUa552X12SgQgpZpEpGOD 54 H: ;XJ;77rv7rJUaQ;rgaPgXXHBB; . . .ri:;; ,: . :6QZEKHXpXXL:,::r1PKXaa2XSS5a5S5UJ22aOBgEpOppZOOgG 55 iwsJsr7rsLrrLcJ2gQGXHwa1SUHBB: . ... . .., : 1BRKpOEGp2Jr;::rsXP1Uaa2U5a5aUa5SsSpgQRZGZEEZZOOgDg 56 ,cs5aXaP552ssLwRSHXaSS5asXBB. . . . LBBgGgZHsr;vrr;rcXpP5UUS5X5S2XS5SS1URBggpEZgDDGOGggRD 57 ,;irrs2KgQRPJJJSUXKXSHJpBM . . . ZBBOUsr;:. ,,,rHgZPUaSaUSUSSXaUPXsSBB6ZZp6EEGOOGDEggO 58 ;BBQQZaSJ5J15SJDQ7 .iEBL:. . .,:,:;SRQGZXPXXSHaS2UUSUSswQB6OZgG6pZZGODEOGDE 59 JgUri1aGEpEpXSS5LBQ, .rLap2Jr ;712OO6ZggRDZXHXpKK2211LLLc7wgBa2PODRGE6OZgDgGDGD 60 7QB; ,Jc76DaZXOZgDPEBBX, :c1HEZ1c;:,.,:;cHDgQQggMZgGOZO6OEGpXsLLsJXHPOBBBc;vss5EMggZDODOgED6 61 LZJ::iwrrr72EPgXU5OBBBBBBBp7: .i5P6wL;, .:LS6DMgMgZKgEOPOGGDDGEXULvLSOBBBBBQBgDQDJ5rrr7JOQQDDZGEgDD 62 wp rR5, .HQRX7r72RQBBBBBQBMEK6Uc7sc7cHOU:, .:LHgOQg6ZOPZpZGGEDERZPwcr7LKDDaJr:. rBX;;:r:ir1DBQMgRgDp 63 7D,sw: , Z. .LgBBQBBOsJaQBBBBBBXrr. .:rwZBBQgROgDgDOERRMgROOScrLsPP5r, 7Qs,::::::rUgRgZOG6 64 ,Q57:r ,: ,r U: .;; .vL7L;r:UG7.:sr;JSgQBgDEZXXUSXpHa21svr7r7s2v:. iQK...:,:::;LLJJws 65 OBHs;. :;;,v H: :6X; rpL;7pSrrr7r;::,....,,:;iirrvvvr, :BBPs;;:,,,,::;:: 66 ::rPDEL:..7:c;7r pK .: :KL.:r:.. ..:icsS5sr:,. JgGgBQDOSJss77r 67 :r;::: , PH r, ,;5: ,::::;7Ls7Lc7;: ,:7JP17rJUs 68 .:J: :; .,:K6BQS7:.,.,. 69 :r7Ji;r7;::;;. 70 . **/ 71 72 #include <bits/stdc++.h> 73 using namespace std; 74 75 #define FFI(a, b) for(int i = a; i < b; i++) 76 #define FFJ(a, b) for(int j = a; j < b; j++) 77 #define RR(a, b) for(int i = a; i > b; i++) 78 #define ME(a, b) memset(a, b, sizeof(a)) 79 #define SC(x) scanf("%d", &x) 80 #define PR(x) printf("%d\n", x) 81 #define INF 0x3f3f3f3f 82 #define MAX 1001 83 #define MOD 1000000007 84 #define E 2.71828182845 85 #define M 8 86 #define N 6 87 typedef long long LL; 88 const double PI = acos(-1.0); 89 typedef pair<int, int> Author; 90 vector<pair<string, int> > VP; 91 92 int main(void){ 93 #ifdef LOCAL 94 freopen("in.txt", "r", stdin); 95 freopen("out.txt", "w", stdout); 96 #endif 97 ios::sync_with_stdio(false); cin.tie(0); 98 LL T, len, n, m, n1, res, ans;string str; 99 100 cin>>T; 101 while(T--){ 102 cin>>str>>m;n = res = 0; 103 FFI(0, str.size())n = (n * 10 + str[i] - ‘0‘) % m; 104 n1 = (LL)sqrt(n); 105 106 //ÖÊÒòÊý 107 FFI(2, n1 + 1)if(n % i == 0){res++;while(n % i == 0) n /= i;} 108 109 if(n != 1)res++; 110 cout<<res<<endl; 111 } 112 113 return EXIT_SUCCESS; 114 }
链接:https://www.nowcoder.com/acm/contest/122/G
来源:牛客网阿汤的数组时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
阿汤同学为了准备下学期的 ACM-ICPC,刷了很多的题目,他觉得自己已经比较厉害了,于是想出个题目考考你。现在他给你一个数组 A,问你是否能将该数组划分成数组 B、C 使得 B 数组的平均数和C 数组的平均数相等,数组 B 和 C 都不能为空。输入描述:
从标准输入读入数据。
输入包含多组数据,第一行一个整数 T 代表数据组数。接下来依次描述每组数据,对于每组数据:
第一行输入正整数 N,第二行输入 N 个非负整数
1≤|A|≤30 (数组 A 的长度范围在 1 到 30 之间 )
0≤A[i]≤10000 (数组 A 中的元素)输出描述:
输出到标准输出。
对于每组数据,输出一行:
如果能划分成满足题目要求的数组 B 和 C 则输出 yes,否则输出no示例1输入
1 8 1 2 3 4 5 6 7 8
输出
yes
说明
样例说明:将数组 A 划分成【1,4,5,8】和【2,3,6,7】,平均数为 4.5
分析:DP,板子题
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t,n; 5 bool dp[310005][33]; 6 int s[35]; 7 int solve(){ 8 cin>>n; 9 double sum=0; 10 for(int i=1;i<=n;i++){ 11 cin>>s[i]; 12 sum+=s[i]; 13 } 14 sum/=n; 15 memset(dp,0,sizeof(dp)); 16 int maxn=0; 17 dp[0][0]=1; 18 for(int i=1;i<=n;i++){ 19 for(int j=maxn;j>=0;j--){ 20 for(int z=0;z<n-1;z++){ 21 if(dp[j][z]){ 22 int k=j+s[i]; 23 dp[k][z+1]=1; 24 maxn=max(maxn,k); 25 if(fabs(k*1.0/(z+1)-sum)<=0.0000000001){ 26 // cout<<k<<" "<<z+1<<endl; 27 // cout<<sum<<endl; 28 return 1; 29 } 30 } 31 } 32 } 33 } 34 return 0; 35 } 36 int main() 37 { 38 int t; 39 cin>>t; 40 while(t--){ 41 if(solve()) cout<<"yes"<<endl; 42 else cout<<"no"<<endl; 43 } 44 return 0; 45 }
链接:https://www.nowcoder.com/acm/contest/122/H
来源:牛客网小q的数列时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
小q最近迷上了各种好玩的数列,这天,他发现了一个有趣的数列,其递推公式如下:
f[0]=0 f[1]=1;
f[i]=f[i/2]+f[i%2];(i>=2)
现在,他想考考你,问:给你一个n,代表数列的第n项,你能不能马上说出f[n]的值是多少,以及f[n]所代表的值第一次出现在数列的哪一项中?(这里的意思是:可以发现这个数列里某几项的值是可能相等的,则存在这样一个关系f[n‘] = f[n] = f[x/2]+f[x%2] = f[x]...(n‘<n<x) 他们的值都相等,这里需要你输出最小的那个n‘的值)(n<10^18)输入描述:
输入第一行一个t
随后t行,每行一个数n,代表你需要求数列的第n项,和相应的n‘
(t<4*10^5)输出描述:
输出每行两个正整数
f[n]和n‘,以空格分隔示例1输入
2 0 1
输出
0 0 1 1
分析:这题我本来也是想找循环环,但是发现有点问题,后来再用n / 2 ,n % 2想的
1 /** 2 3 :;LaEaHKEEGpPXU7;, 4 .:75pKH11252U252XapZgRQgD6XJscLr;,. 5 :LXpRgGaX521JLw1JswJJsJs22XHPPEZEGDOMMRDOa7. 6 .r2EDDZEpZPZP6KpHX5SXH5XXa5KwaXaSX5UJ1c77sLs2GMQQ6r . 7 ,LpgOGpEZGZEZEpZKpHHU5wP5HEDgpXpHa2SSa5aSXULr7rrirrJXRBp; ;B 8 ,J6MRZH6EgEEZE6E6EZZPZXXwSSGQXr::aPpP5USUHaHaKa5Lvrr7ri;rLHBB2: Kc 9 rpQDOpPPOGGZOGOZG6GEOEOEDPPGBa. .PaSSUXSUUUaUSaKXKS177r7rrrirSBBR7 .O, 10 :UBQOKPK6ZOOOEDEO6GZE6EpEpDgDBR: UBpXHa5aSaUS5SUS5XapPHJc7rrv7rr7sgBBs .g. 11 ;gBMPXpO6GEOEOEOEGEOEE6EZEEDRGBB EB5pKSXpHKaHSX552S5aUHHEX17c7vr7777s5RBS: .R; 12 .sQBPXpDZOODOgODGOGgEDEOEOGgGgOOMB: LBKKSXSHa52aaKXHXKaa5aSaaHXSJLcL7vcc777JDBBg2;. Qi 13 ;2ggp2EDDOggGEDGgDDOgGGZDOOZOGg6gEBX vBZaHUKaaUXXXSXXKXpXHXH5wwaa52U1wssLsLJccv1UDQBQ67. O7 14 :ZZUU5PROOEOZOZGGOODZOGgODZOOgOggRgRB; ;:..R6XaKKpP6PGppKPHpHpPX5aU21UUa5Sw52UwUJJv77L77sSpQMDU; ;B5 15 ,SRJ7sSHGggEOZOEG6OODpOZgggOQQBBBBBQBBQ.,;;. LBOgOgDRDDZODMgQRgRDaa552a252UUa25w5UaU2sLvccs7r7sJZBBMr ,XQJ: 16 LQHr77J6RGOZDZOEGEDGgDRORQBBBQRDPU1Jscwa7.,::.:J7r;::::. ..,:;i7UOgRRRgDPH5SUSU52U2HHa1JJJLJLccLr71RBB, 7R2, 17 :RZv;77JSgGOZEODEDGOEggQBBBMS7;:,:,,.,.,.:7L;:,;.: ,: . ..... .:;rJU6GgGRggEZHPaKXX2S221Js1Lc7r:7QB. .XX: 18 7g1;;7rcXG6gpGDZGgZOOQBBQpr. ::::;:;:::Jr::sr;::;:.:vs,:::::::::::,, ,:7L5HGOggRgZUUU5wSUaJLc7r7BOiDr ... 19 .XX;;;irLHGKpZZZEKgDRBBB6i ,;;:;;;;r;;:s177:,;L7:;7:.rHi,:::::::::::::::::,. .,;7ZRQgO6KUUJsLwsJ7KBM. ..... 20 JZ:;rrrc5EPHp6XgpRBBBE; :i:;;;;;:;;;:c7::r7;,::::::::rv:,:::::::::::,:,:,:,,,, .;sORQRGX21wsXU: .... . 21 .Br;iir72EHPHZ6EgBBR7. ..;ii:;;;;;;;;;:71r::.:7, .::7;:;H;.::,:j::::::,:::::,,,::,,, ,7wEDRZBMr ....... 22 1D;:r;rwOPXPKH6BBX, .:;:;;;:::;:;;;;;::Ls,;ss..r. ,c77;sLU,:,:::,:::,:,:,:,,,:,,,:::. .:.rP:....... 23 D2:i;rJpKHXHXgg7 .,,::::;:::::;:;:;;:;SL7sS2, :. ::::,:U7.:::,:::,:,,,,,:,,.,,,.,:, ;L:. .. ... 24 :Qc;i7LGZPa6gBM, ...,,::::::::::::;;::;.JJ;ic: ;:::,v1,.:::;7,,,:,:,:,,,,.:,,,,.. :2wr. ....... 25 sRr:rrwZGgBQR7. .,,::::::::::::::;::;:::Hr:7i ,;;:::U: .,,,:r.,,:,:,:,,,:,,,..... 7K2:. .......... 26 OX:irsXgQZ:. .,,:::,,:::,::::::::;;;::r5;r7: :;;;:7L ..,.,;:,:,:,,,:,:,,,,...... .rU6w;.............. 27 .BJ71EK5;. .,,::,:,:,,,:,:,::::::::;:;.Ls;r7 :;:::s, ..,,,r:.:.,,,.:, .,..... . .;s5XJr,..,............. 28 1Mv::. .:,:,,,,,,,:::::::,;:::;:;::..J7;c: ,. ,rri:27 , .,:;. ,:,:,,:..,.... .rpPL;:.. ... ............. 29 ..7Ls: .,,,:,,,:,:,:::,:,:::::,:::::: .Srrr, .,:;;;::::..:7r;r1 .: :E:..,,:,...,,.., ..XBQ7, ................... .. 30 ,;7v7r7:, ,,,,:.,,,,,,:,,::,:,,.::.,:.,:, :Jrr; ,r7,:.. ,:::L: . .7RJ .,.:.,......,,:MBs ..............,........ 31 .:;vJs7i, ,,,., ..,,:,,,:,,,:,:.,rs,,.:,, ;J;c, .,::;; Lr.E: .,...,....:,:1Z: .........,.,...........:,. 32 .;,,:r7J1wv;,. ....,.:. .,.,,:,,,:,,::::,sS;.:::, cLrr. . .,. .,..: ;; r5 ........,,:;s7. ....,.,.,...........,.,.,,. 33 ,BBs::: . ........,.,,,,,.:,,,:,:,,.;s7r,,,,, cc7; ,.,,. .:7rrJGMPOEL1, ..... ,,:rSr, : ,.,.,.,.,.........,,,,,. .. 34 rZL. ....... ..,,,.,,,..,,,.,;,...7J:s: .. .wr7, ... .rJpQBBBBBBBQgKP77s .. .,7S2,,....,....,.,.,......,,.,. .:cX2 35 ;SH7, . . . .. .,.,.,.,,,...,..r, ::Ur;7L . .57;. .rPBBQBBBPws:;r::::.,:P. .;S5;,..,...,.,.,.,.... ..,,, ..,7HSJvr 36 r7r;: . ... ..........,...,.. 7L;,rS;;ivr . 1r: . .rZBBK7;.JL,::Jrs;.:;,:;J, .,;LDv..:.,...,.,.,.,...,.,,:,, ,7sKGwc77; 37 .:7L7:, . ,r,..,.,,,...,..:iLL 7s;r;cv: U7. :vi;:. .. :Er:::.Ls. . ,7::::vHEi ,:,,.,,,.,.,,,,,,::::, .:1QBKJJUsssc 38 .:rvw1JsL7;, ,;..........,.:ir :r .ELr77v:,. Pr .. . Ls ,w. rr.r:JPr. ::,..,,,.,,,,:,:::,:,..7XgRE52US25w1c 39 .:;7JRQpX: ; .........,i: .,J ;gri;7r : 1; .X: . ,v :aK1, ,,:.,,,.,,,,:::::,;::::cOBB6K55UXUX5XUw 40 ;J,XQB7,: . ...,: .:7Z.7Zi7;r: , v, :w:;,.,:::7LUsc:..:,:.:,,,,,:,:::::::,:;c5BBPS5wSUSUaUaUa2 41 J7 rEBBg..,. ..... . ,L1PLKr:,:;r;;::, :, :;SXsJU1XLLr....:,,,,,,::::,::::::,::LL,,rZXUJU25552aUUUU 42 JL .:sXBB:... ., . ,OH777;,rZRBBBQL ..r, ,:r7::r:,;;....:,,,,,,,,.::::;::;:::.7gL UK2UUS1aw2wU25J 43 U7 .r71BB; . :.. .. :QJ;.;1pBBBBBGRBRi i: . .w7. ..,,:,,,,,:,:,:::::::,.,2BR: .DSaUSUUS525w5U1 44 2r :7rJBQ7 .;. . KL::JGBBBgE6Hp6XMQ; . ... ,2s ,,,,:::::,:::::::,,.:sQQB2 ;DHa5U52S2U25USJ 45 a: :7;1BB2 .v, sL;LPQgDBPH6KPQBpGBG . ... .. aP:. .. ,::,:::::,,,,.;rSgBQDa; :gSSwSUUU525US2U 46 5; ;;r2QBB, .s: :a7:PBZ2,:BEaZPKgBZOgB, . ...:LEHri::,:.,,.,,,::rsXRBgGKEJi, 2GH252SUS5S11wH5 47 U: ;:rwDBBr .c, rB6r 167.,,RQPpEP6OpKEBc ., . : ::sS7;cKB6HHa1XOQRRQBRgEZDBH; .. ;RZUPSSU525USSpK2 48 s; ;::aBg, .; .Gv,H::,,::,;BQDOGHPXpKBs .,. . .,. .r:;:6gOEBQRRRDggQgOHgMGL, .;PEHHXaaKaPXPKPaXS 49 s7.:,sBa :..S, vE::::; 7BBMgZH6pQBr . ,:, ,.,r2RHSSpMZPKRRZpgggav, ;UpEZaaaKHHUHPPaUJHGO 50 a;.775: .::rU. gR:,:. :;:BBBBQar . ,, ,.,7rggJwU6DDGMgOGgXc:, ,rPGOpKSXSXSKUKHU1UHgOEP 51 1i :SZJrLXpBBMRB: .v Ba,. :sv: . irsBUSpEEGPPpg65r:..,;sKZDZHSX5XaHU55K2wUGMRZ6Z6 52 :K :7asvwc2MgEQB, :gg.:iB7 .,,,:. ...,. . .. .:iM6GEpSSXZOEs:...;spZpKKXXSX5Xa5Ja5wwKGQDEpp6OZ 53 w; ,LXLr77sLwL5aR. gRgQgaQBi ,vJwvi,. .;;:;7: . . ,... rRDRJUSXpgas:,.:;U66SaHa2X5aUa552X12SgQgpZpEpGOD 54 H: ;XJ;77rv7rJUaQ;rgaPgXXHBB; . . .ri:;; ,: . :6QZEKHXpXXL:,::r1PKXaa2XSS5a5S5UJ22aOBgEpOppZOOgG 55 iwsJsr7rsLrrLcJ2gQGXHwa1SUHBB: . ... . .., : 1BRKpOEGp2Jr;::rsXP1Uaa2U5a5aUa5SsSpgQRZGZEEZZOOgDg 56 ,cs5aXaP552ssLwRSHXaSS5asXBB. . . . LBBgGgZHsr;vrr;rcXpP5UUS5X5S2XS5SS1URBggpEZgDDGOGggRD 57 ,;irrs2KgQRPJJJSUXKXSHJpBM . . . ZBBOUsr;:. ,,,rHgZPUaSaUSUSSXaUPXsSBB6ZZp6EEGOOGDEggO 58 ;BBQQZaSJ5J15SJDQ7 .iEBL:. . .,:,:;SRQGZXPXXSHaS2UUSUSswQB6OZgG6pZZGODEOGDE 59 JgUri1aGEpEpXSS5LBQ, .rLap2Jr ;712OO6ZggRDZXHXpKK2211LLLc7wgBa2PODRGE6OZgDgGDGD 60 7QB; ,Jc76DaZXOZgDPEBBX, :c1HEZ1c;:,.,:;cHDgQQggMZgGOZO6OEGpXsLLsJXHPOBBBc;vss5EMggZDODOgED6 61 LZJ::iwrrr72EPgXU5OBBBBBBBp7: .i5P6wL;, .:LS6DMgMgZKgEOPOGGDDGEXULvLSOBBBBBQBgDQDJ5rrr7JOQQDDZGEgDD 62 wp rR5, .HQRX7r72RQBBBBBQBMEK6Uc7sc7cHOU:, .:LHgOQg6ZOPZpZGGEDERZPwcr7LKDDaJr:. rBX;;:r:ir1DBQMgRgDp 63 7D,sw: , Z. .LgBBQBBOsJaQBBBBBBXrr. .:rwZBBQgROgDgDOERRMgROOScrLsPP5r, 7Qs,::::::rUgRgZOG6 64 ,Q57:r ,: ,r U: .;; .vL7L;r:UG7.:sr;JSgQBgDEZXXUSXpHa21svr7r7s2v:. iQK...:,:::;LLJJws 65 OBHs;. :;;,v H: :6X; rpL;7pSrrr7r;::,....,,:;iirrvvvr, :BBPs;;:,,,,::;:: 66 ::rPDEL:..7:c;7r pK .: :KL.:r:.. ..:icsS5sr:,. JgGgBQDOSJss77r 67 :r;::: , PH r, ,;5: ,::::;7Ls7Lc7;: ,:7JP17rJUs 68 .:J: :; .,:K6BQS7:.,.,. 69 :r7Ji;r7;::;;. 70 . **/ 71 72 #include <bits/stdc++.h> 73 using namespace std; 74 75 #define FFI(a, b) for(int i = a; i < b; i++) 76 #define FFJ(a, b) for(int j = a; j < b; j++) 77 #define RR(a, b) for(int i = a; i > b; i++) 78 #define ME(a, b) memset(a, b, sizeof(a)) 79 #define SC(x) scanf("%d", &x) 80 #define PR(x) printf("%d\n", x) 81 #define INF 0x3f3f3f3f 82 #define MAX 1001 83 #define MOD 1000000007 84 #define E 2.71828182845 85 #define M 8 86 #define N 6 87 typedef long long LL; 88 const double PI = acos(-1.0); 89 typedef pair<int, int> Author; 90 vector<pair<string, int> > VP; 91 92 int main(void){ 93 // #ifdef LOCAL 94 // freopen("in.txt", "r", stdin); 95 // freopen("out.txt", "w", stdout); 96 // #endif 97 // ios::sync_with_stdio(false); cin.tie(0); 98 LL T, n, ans, len; 99 100 cin>>T; 101 while(T--){ 102 scanf("%lld", &n); len = ans = 0; 103 while(n > 1){ 104 if(n % 2 == 1) len++; 105 n /= 2; 106 } 107 len += n == 0 ? 0 : 1; 108 FFI(0, len) ans = ans * 2 + 1; 109 printf("%lld %lld\n", len, ans); 110 } 111 112 return EXIT_SUCCESS; 113 }
以上是关于南昌航空大学4-6次PTA总结的主要内容,如果未能解决你的问题,请参考以下文章