当前位置: 首页 > news >正文

程序设计挑战赛A卷

某药店为了回馈顾客,拿出7个品牌的口罩做特价限购活动:A品牌是3个装2元,B品牌是3个装3元,C品牌是4个装2元,D品牌是5个装3元,E品牌是4个装5元,F品牌是1个装2元,G品牌是2个装2元,每个品牌只能买一包。小涵拿N元钱去药店买特价口罩,小涵最多能买多少个口罩?

import java.util.Scanner;public class medicineQue {public static void main(String[] args){//药店应用题Scanner sc=new Scanner(System.in);System.out.println("请输入预算:");int N=sc.nextInt();int S=0;//口罩计数器//首先考虑极端情况,钱特别多,达到总和19,那么七个品牌的口罩都能买到//钱特别少,少于2则买不到口罩if(N>=19){S=22;}else if(N<2){S=0;}else if(N==2||N==3||N==5){switch (N){case 2:{S=4;break;}case 3:{S=5;break;}case 5:{S=4;break;}default:break;}}else{for(int i=1;i<8;i++){switch(i){case 1:{N=N-2;S=S+4;break;}//ccase 2:{N=N-2;S=S+3;break;}//acase 3:{N=N-3;S=S+5;break;}//Dcase 4:{N=N-2;S=S+2;break;}//Gcase 5:{N=N-3;S=S+3;break;}//Bcase 6:{N=N-5;S=S+4;break;}//Ecase 7:{N=N-2;S=S+1;break;}//Fdefault:break;}if(N<=1) break;}}System.out.println("可买口罩个数为:"+S);}
}

从键盘上输入一个数值字符串(表示非负整数,所以该字符串不带正负号和小数点),输出这个字符串中的数字字符重新组合的最小数。例如“654321”输出的为“123456”;“001254”输出为“100245”;“00000”输出“0” 输入说明:数字字符串S,输出说明:最小数字

import java.util.Scanner;public class minNum {public static void main(String[] args){//最小数字System.out.println("请输入数值字符串:");Scanner sc=new Scanner(System.in);String in=sc.nextLine();char[] ch=in.toCharArray();int min=9;int t=0;int j=0;for(int i=0;i<in.length();i++){//找到除0外最小的数int num=in.charAt(i)-'0';if(num<min&&num!=0){min=num;//min用于记录最小值j=i;//记录最小值的下标t++;}}if(t==0) min=0;if(min==0) System.out.println("0");else{//删除字符串中非0最小值,变成新的字符串String s=in;if(j<0||j>=in.length()){System.out.println("索引超出范围!");}else{s=in.substring(0, j)+in.substring(j+1);}System.out.println("s为:"+s);//排序char[] a=s.toCharArray();//a[0]=min;for(int i=0;i<s.length()-1;i++){for(j=i+1;j<s.length();j++){if(a[j]<a[i]){char temp=a[i];a[i]=a[j];a[j]=temp;}}}System.out.println("排序后:"+String.valueOf(a));String out=String.valueOf(min)+String.valueOf(a);System.out.println(out);}}
}

给定一个只包含0-9、‘-’、‘’的合法数学表达式(长度<1000),规定减号‘-’的优先级高于乘号‘‘’,请输出计算结果。输入说明:合法的数学表达式(其中的数没有负数) 输出说明:输出表达式的计算结果 输入样例:12 * 3-12 * 2 输出样例:-216

import java.util.Scanner;
import java.util.Stack;public class MathExpre {public static void main(String[] args){//数学表达式计算System.out.println("请输入数学表达式:");Scanner sc=new Scanner(System.in);String in=sc.nextLine();//调用数学表达式处理函数int out=MathCha(in);System.out.println("该数学表达式结果为:"+out);}static int MathCha(String in){//创建两个空栈,一个为数据栈,一个为符号栈Stack<Integer>data=new Stack<>();Stack<Character>sign=new Stack<>();//处理字符串,数字入数据栈,符号入符号栈for(int i=0;i<in.length();i++){char ch=in.charAt(i);//如果是数字if(Character.isDigit(ch)){int num=0;while(i<in.length()&&Character.isDigit(in.charAt(i))){num=num*10+(in.charAt(i)-'0');i++;}i--;//while循环到达符号停止,所以需要往回跳一位data.push(num);//数字压入栈内}else if(ch=='-'||ch=='+'){//处理加减法while(!sign.isEmpty()){if (data.size() == 1) return data.pop();int b=data.pop();int a=data.pop();char s=sign.pop();switch(s){case '+':{data.push(a+b);break;}case '-':{data.push(a-b);break;}case '*':{data.push(a*b);break;}case '/':{data.push(a/b);break;}default:break;}}sign.push(ch);}else if(ch=='*'||ch=='/'){//乘除法的情况while(!sign.isEmpty()&&(sign.peek()=='*'||sign.peek()=='/')){if (data.size() == 1) return data.pop();int b=data.pop();int a=data.pop();char s=sign.pop();switch(s){case '*':{data.push(a*b);break;}case '/':{data.push(a/b);break;}default:break;}}sign.push(ch);}}while(!sign.isEmpty()){if(data.size() == 1) return data.pop();//确保数据栈有足够的元素char s=sign.pop();int b=data.pop();int a=data.pop();switch (s){case '+':{data.push(a+b);break;}case '-':{data.push(a-b);break;}case '*':{data.push(a*b);break;}case '/':{data.push(a/b);break;}default:break;}}return data.pop();}
}

从大于等于N的正整数里找到一个最小的数M,使之满足M和M的逆序数(如1230的逆序数为321)的乘积为[100000000,200000000]区间内的值。输入说明:起始数字N;输出说明:找到的第一个符合条件的数,如果没有符合条件的数,输出F。输入样例:123456 输出样例:124100

思路:找到M的逆序数,算乘积,判断是否在区间范围内

import java.util.Scanner;public class InversionCount {public static void main(String[] args){//逆序数乘积int N;long L=100000000;long R=200000000;System.out.println("请输入一个正整数N:");Scanner sc=new Scanner(System.in);N=sc.nextInt();for(int i=N;i<R;i++){int M=i;//找M的逆序数String str="";//System.out.println("M="+M);while(M!=0){int temp=M%10;if(temp!=0||!str.isEmpty()){String str1=String.valueOf(temp);//System.out.println("str1="+str1);str=str+str1;//System.out.println("str="+str);}M=M/10;}//计算M与M的逆序数乘积long s1=Integer.parseInt(str);//System.out.println("s1="+s1);long s=i*s1;//System.out.println("乘积是:"+s);if(s>=L&&s<=R){System.out.println(i);//System.out.println(str);//System.out.println(s);return;}}System.out.println("F");}
}

http://www.mrgr.cn/news/60646.html

相关文章:

  • Leetcode 140 Word Break II
  • 浏览器无法访问非80端口网页
  • python:如何判断一个数是否为素数
  • 图---java---黑马
  • Junit + Mockito保姆级集成测试实践
  • 文本编辑器的解压和使用
  • CXL与近内存计算结合,会发生什么?--part2
  • 流量特征分析-常见攻击事件 tomcat
  • python3的基本数据类型:List(列表)创建与索引
  • 存储引用服务(OSS)Minio 环境搭建
  • 审阅员工聊天行为|企业该怎么审阅员工的聊天行为?5个方法分享(实用+收藏)
  • 当代年轻人的“发疯文学”也能涨粉变现!报价¥2w+的笔记,你也能做!
  • 长思维PRM
  • 浅析Android View绘制过程中的Surface
  • 时间序列预测(十五)——有关Python项目框架的实例分析
  • 双十一买什么数码好物比较好?五大闭眼入的数码好物别错过!
  • 浅析Android中View的软件绘制流程
  • 【C++】How the C++ Compiler Works
  • Shiro 会话管理和加密
  • 溪源飨提高免疫力治未病:硒+辅酶Q10强力组合
  • numpy——数学运算
  • C++ vector
  • 西门子S7-200 SMART 多泵轮换功能库案例下载
  • 超子物联网HAL库笔记:准备篇
  • TypeScript 接口知识点详解
  • 多态的体现