题目跳转

  • 1.3275 骑车与走路
  • 2.3388 分拣
  • 3.3277 判断闰年
  • 4.3273 被3,5,7整除
  • 5.3271 输出绝对值
  • 6.3268 等差数列的末项
  • 7.3415 A+B V2
  • 8.3429 条件输出5

1.3275 骑车与走路

2.3388 分拣

3.3277 判断闰年

4.3273 被3,5,7整除

5.3271 输出绝对值

6.3268 等差数列的末项

7.3415 A+B V2

8.3429 条件输出5

3275 骑车与走路

public class 骑车与走路_3275{public static void main(String[] args){panduan();}public static void panduan(){//首先是输入的问题java.util.Scanner s=new java.util.Scanner(System.in);int a=s.nextInt();if((50+a/3.0)>a/1.2){System.out.println("Walk");}else if((50+a/3.0)<a/1.2){System.out.println("Bike");}else if((50+a/3.0)==a/1.2){System.out.println("All");}}
}

3388 分拣
这次真的是给我写吐了,我不断的将我的代码改进,始终不能通过,最后参考了一下这位大神的代码发现我的问题,不是自身的代码,而是数据转换过多.就是说我最开是接收的数据为String类型,无法强转类型转换为int类型,所以就查了一些方法采用Integer.parseInt(String)将类型进行转换,而每个循环都这样,相当于每一次都执行了一个----方法----,导致时间复杂度过高.下次注意

package java题库.nod51;/*工厂里有一些分拣物件的工作,其中一名工人的工作是将面前传送带上依次送来的n个物件按照物件上的标号分别放到向左、向右两条传送带上,奇数的向左,偶数的向右。直到这一批物件分拣完,组长检查无误后打包装箱。身为组长的小明自知责任重大,每次工人分拣完后他都会立即停下传送带,从工人左侧传送带的最左端开始核查物件的标号,直到查到工人右侧传送带上最右端,以确认是否分拣正确。已知物件传送过来的顺序,小明希望你帮忙记录一个关于物件标号的数字序列,表示他应当核查到物件的顺序,以便迅速完成工作。输入:第一行输入一个数n,表示物件总数;第二行输入n个数,表示依次送来的n个物件上的标号。输出:输出一行n个数,表示小明应核查到的正确的物件顺序,以空格隔开。数据范围:对于100%的数据,1≤n≤100000,0≤物件标号≤10^9;输入样例61 2 3 4 5 6输出样例1 3 5 6 4 2
*///如果是python应该怎么做,让他输入得到一个列表,遇到奇数的输出,遇到偶数的入栈(就是个列表)
//等到把列表全部循环一遍,开始出栈import java.util.*;
public class 分拣_3388{public static void main(String[] args){看了人家的代码做的修改();}public static void fenjian(){//吐了提交运行超时,不过也该,写了两边循环//用来接收输入Scanner s=new Scanner(System.in);//接收输入的nSystem.out.print("请输入n");int n=s.nextInt();//接收输入的字符串,他们中间以空格隔开System.out.print("请输入这n个数");Scanner d=new Scanner(System.in);String str=d.nextLine();//使用split,以空格作为分割符,获得字符串数组String[] strs=str.split(" ");//这里采用第三种方法建立int类型数组(声明数组时指定元素个数然后赋值)int[] nums=new int[n];//开始for循环将变量放入数组中//这个变量是用来记录偶数个数int ou=0;for(int a=0;a<n;a++){//我想到了一个方法,记录偶数的个数//在这个过程中将偶数放到一个新的数组中(但是你不知道这个数组的长度)//但是一定小于n,所以你可以先放进去,之后再一个循环给他拿出来//说实话挺蠢的,等我java学的好一点,一定要搞一个动态的和python的list//一样的东西int b=Integer.parseInt(strs[a]);if(b%2!=0){//奇数输出System.out.printf("%d ",b);}else{nums[ou]=b;ou+=1;}}//再来个循环把偶数全部输出for(int a=ou-1;a>=0;a--){System.out.printf("%d ",nums[a]);}}//我突然想到了一个好办法,一个从左往右跑输出奇数,一个从右往左跑输出偶数,一个循环就能把奇数偶数全部输出//因为奇数一定要先输出完//所以拿一个字符串变量,将他们拼接到一起public static void fen_String(){//运行还是超时,这个的时间复杂度应该是o(n)//细算的话是o(2n),当然其实你只需要走路程的一半,这样所有的数其实都已经走过了//所以再优化一下//用来接收输入Scanner s=new Scanner(System.in);//接收输入的nSystem.out.print("请输入n");int n=s.nextInt();//接收输入的字符串,他们中间以空格隔开System.out.print("请输入这n个数");Scanner d=new Scanner(System.in);String str=d.nextLine();//使用split,以空格作为分割符,获得字符串数组String[] strs=str.split(" ");//创建两个String类型的变量,进行拼接String ji="";String ou="";//从右往左跑所需要的变量int len=n-1;for(int a=0;a<n;a++){//从左往右int b=Integer.parseInt(strs[a]);//从右往左int c=Integer.parseInt(strs[len]);if(b%2!=0){ji=ji+b+" ";}if(c%2==0){ou=ou+c+" ";}len-=1;}//当循环结束将他们拼接在一起输出System.out.println(ji+ou);}public static void 优化_string() {//运行还是超时,这个的时间复杂度应该是o(n)//细算的话是o(2n),当然其实你只需要走路程的一半,这样所有的数其实都已经走过了//所以再优化一下//用来接收输入Scanner s = new Scanner(System.in);//接收输入的nSystem.out.print("请输入n");int n = s.nextInt();//接收输入的字符串,他们中间以空格隔开System.out.print("请输入这n个数");Scanner d = new Scanner(System.in);String str = d.nextLine();//使用split,以空格作为分割符,获得字符串数组String[] strs = str.split(" ");//创建两个String类型的变量,进行拼接String ji_left="";String ji_right="";String ou_left="";String ou_right="";//从右往左跑所需要的变量int right =n-1;//从左往右跑所需要的变量int left=0;while(left<right){//需要注意一下,这里不包括中间变量,需要判断是奇数个元素还是偶数个//从左往右int b =Integer.parseInt(strs[left]);//从右往左int c=Integer.parseInt(strs[right]);if (b%2!=0){ji_left=ji_left+b+" ";}else{//偶数怎么办ou_left=" "+b+ou_left;}if (c%2==0){ou_right=ou_right+c+" ";}else{//奇数怎么办ji_left=" "+b+ji_left;}left+=1;right-=1;}//当循环结束将他们拼接在一起输出if(n%2==0) {System.out.println(ji_left+ji_right+ou_right+ou_left);}else{int zhongjian=Integer.parseInt(strs[n/2]);if(zhongjian%2==0){System.out.println(ji_left+ji_right+ou_right+zhongjian+ou_left);}else{System.out.println(ji_left+zhongjian+ji_right+ou_right+ou_left);}}}public static void 人家的代码() {Scanner input=new Scanner(System.in);int n,i,k,j;StringBuilder sb=new StringBuilder();n=input.nextInt();int num[]=new int[n];int numAft[]=new int[n];for(i=0;i<n;i++){num[i]=input.nextInt();}for(i=0,k=n-1,j=0;i<n;i++){if((num[i]&0x1)==1){numAft[j++]=num[i];}else{numAft[k--]=num[i];}}for(i=0;i<n;i++){sb.append(Integer.toString( numAft[i]));sb.append(" ");}System.out.println(sb);input.close();}public static void 看了人家的代码做的修改() {//用来接收输入Scanner s = new Scanner(System.in);//接收输入的nint n = s.nextInt();//接收输入的字符串,他们中间以空格隔开//创建数组int[] nums=new int[n];//循环将数据接收for(int a=0;a<n;a++){nums[a]=s.nextInt();}//创建两个String类型的变量,进行拼接String ji = "";String ou = "";//从右往左跑所需要的变量int len = n - 1;for (int a = 0; a < n; a++) {//从左往右int b =nums[a];//从右往左int c =nums[len];if (b % 2 != 0) {ji = ji + b + " ";}if (c % 2 == 0) {ou = ou + c + " ";}len -= 1;}//当循环结束将他们拼接在一起输出System.out.println(ji + ou);}
}/*对于Scanner类对象:1.可以用 next() 和 nextLine()方法获取输入的字符串2.next():--一定要读取到有效字符后才可以结束输入--对于有效字符之前遇到的空白,next()方法会自动将其去掉--只有输入有效字符后才将后面输入的空白作为分隔符或者结束符--next()不能得到带有空格的字符串3.nextLine():--以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符--可以获得空白创建数组的三种方式:1、声明并赋值int[] arr = {1,2,4, …};注意:这里的花括号不是语句块,而且而且花括号后的分号也不能省,…不是元素意思是可以指定多个元素2.声明数组名开辟空间并且赋值int[] arr;arr = new int[]{1,2,3, …};3.三、声明数组时指定元素个数然后赋值int[] arr1= new int[3];注意:最大元素下标为2,并且所有的元素值均为0赋值一般用for循环4.在以上的基础上创建多维数组int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}; //每个子数组元素个数不要求均相同int[][] arr = new int[m][n]; //其中n可以省略,在创建的时候可以指定int[][][] arr = new int[m][n][q]; //同样其中n、q可以省略总结:无论那种方法声明必须有 :数据类型 [ ] , 如:int[ ]创建多维数组时,new后面的第一个方括号中的元素数量总不能省略“new 数据类型[]{}”创建数组时,其中花括号可以省去,但要在“[ ]”中填写数组的个数String类型数据不能通过:String a="123"int b=(int)a;直接强制性类型转换不知道为什么?//用来接收输入Scanner s=new Scanner(System.in);//接收输入的nSystem.out.print("请输入n");int n=s.nextInt();//接收输入的字符串,他们中间以空格隔开System.out.print("请输入这n个数");String str=s.nextLine();这样是只能输入一次,就是说nextLine()会把前面输入的也接收(可能是同一个引用,保存了数据,再加上nextLine()会把---------所有的拿出来---------StringBuilder可以创建   动态的字符串*/

3277 判断闰年

public class 判断闰年_3277{public static void main(String[] args){run();}public static void run(){//简单的用if语句判断一下就好了//算了if语句用的已经够多了用三元运算符和switch吧//键盘输入java.util.Scanner s=new java.util.Scanner(System.in);int a=s.nextInt();//首先判断是否为普通闰年switch(a%4){case 0://首先为400的倍数一定为4的倍数所以普通闰年,世纪闰年都能进来if (a%100!=0){System.out.println("Y");}else if(a%400==0){System.out.println("Y");}else{System.out.println("N");}//记着break;一下不然default一定会执行(紧挨在一起的原因)break;default:System.out.println("N");}}
}/*case 后面只能放 常量(或者常量表达式)*/

3273 被3,5,7整除

public class 被3_5_7整除_3273{public static void main(String[] args){toswitch();}public static void toif(){//键盘输入java.util.Scanner s=new java.util.Scanner(System.in);int n=s.nextInt();int panduan=0;//按照输出顺序,3,5,7依次判断if(n%3==0){System.out.printf("%d ",3);panduan=1;}if(n%5==0){System.out.printf("%d ",5);panduan=1;}if(n%7==0){System.out.printf("%d",7);panduan=1;}//上面写了三个if,即每一个都要判断一遍,这是正确的//但这导致了我无法判断,他们是否都没执行//所以我决定加一个变量[panduan]来判断是否都没执行了if(panduan==0){System.out.print('n');}}public static void toswitch(){//这里是尝试下switch的写法//我觉得需要循环判断,原因是每次只能放一个数字,当然你可以像上面一样//键盘输入java.util.Scanner s=new java.util.Scanner(System.in);int n=s.nextInt();//创建数组int[] nums={3,5,7};int panduan=0;for(int a=0;a<nums.length;a++){switch(n%nums[a]) {case 0:System.out.printf("%d ",nums[a]);panduan=1;break;}}if(panduan==0){System.out.println('n');}}
}

3271 输出绝对值

package java题库.nod51;
/*输入一个浮点数,输出这个浮点数的绝对值。输入:输入一个浮点数,其绝对值不超过10000。输出:输出这个浮点数的绝对值,保留到小数点后两位(四舍五入)。输入样例:-3.14输出样例:3.14首先的想法是if语句判断 正,负正数直接输出负数用0-输出主要是如何保存2位小数*/
public class 输出绝对值_3271{public static void main(String[] args){//从键盘接收元素java.util.Scanner s=new java.util.Scanner(System.in);System.out.println("请输入:");double a=s.nextDouble();if(a>=0){//可以直接输出System.out.printf("%.2f",a);}else{System.out.printf("%.2f",0-a);}}
}/*需要注意的点:如果想要格式化输出 ----"%.2f",a----需要使用printf不能使用println,或print.这个pringf有种print.format的感觉*/

3268 等差数列的末项

public class 等差数列的末项_3268{public static void main(String[] args){java.util.Scanner s=new java.util.Scanner(System.in);int a1=s.nextInt();int a2=s.nextInt();int n=s.nextInt();int d=a2-a1;System.out.println(a1+(n-1)*d);}
}

3415 A+B V2

/*已知两个非负整数A,B,请你求出A+B的值并输出这个加法算式。
*/
class ABV2_3415{public static void main(String[] args){//键盘输入java.util.Scanner s=new java.util.Scanner(System.in);long a=s.nextLong();long b=s.nextLong();System.out.println(a+"+"+b+"="+(a+b));}
}

3429 条件输出5

/*编程实现输入两个整数a,b,当a≥b时,输出a的值,否则输出0。你知道如何不使用 if,switch以及 3 目运算符,来解决这个问题么?
*/
import java.io.*;
import java.util.*;public class 条件输出5_3429{public static void main(String[] args){//接收键盘输入Scanner s=new Scanner(System.in);int a=s.nextInt();int b=s.nextInt();//if语句写法if(a>=b){System.out.println(a);}else{System.out.println(0);}System.out.println('---------------------------------')//switch写法,因为只能判断是否相等所以需要转化switch(a/b){//若a>=b则b/a为0或1case 0:case 1:System.out.println(a);break;default:System.out.println(0);}System.out.println('---------------------------------')//三目运算符写法System.out.println(a>=b ? a:0);System.out.println('---------------------------------')//不使用以上三种写法}
}

java 51nod相关推荐

  1. 51Nod 1873 - 初中的算术(JAVA)

    [思路] Java大数可以直接搞,有专门控制输出格式为非科学计数法以及去除后导0的函数 import java.util.*; import java.math.*;public class Main ...

  2. 51 Nod 1027 大数乘法【Java大数乱搞】

    1027 大数乘法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A*B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度 ...

  3. linux如何运行java程序,Linux环境下运行简单java程序

    一.安装java 1.下载jdk8 选择对应jdk版本下载.(Tips:可在Windows下载完成后,通过FTP或者SSH到发送到Linux上) 2. 登录Linux,切换到root用户 su roo ...

  4. Java Java!

    51nod的大数题(部分)之Java Java! 1028 import java.io.*; import java.math.*; import java.text.*; import java. ...

  5. 个人收集的java面试题库

    百度历年笔试面试150题 1.用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回. 2.用C语言实现函数void * memmove(void *dest, const vo ...

  6. java post和put的区别,ES 中的 POST 和 PUT 的区别

    0.什么是Restful架构 比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧: Fielding将他对互联网软件的架构原则,定名为REST,即Representat ...

  7. [51Nod 1185 威佐夫游戏 V2]Wythoff Game+乘法模拟

    [51Nod 1185 威佐夫游戏 V2]Wythoff Game+乘法模拟 题目链接:[51Nod 1185 威佐夫游戏 V2] 题意描述:有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取 ...

  8. java 牛顿迭代算术平方根,牛顿迭代法求n方根

    一.简单推导 二.使用 借助上述公式,理论上可以求任意次方根,假设要求a(假设非负)的n次方根,则有xn=a,令f(x)=xn-a,则只需求f(x)=0时x的值即可.由上述简单推导知,当f(x)=0时 ...

  9. java 删除过期文件_定时脚本: 删除HDFS中的过期文件

    1. 基本原理: 通过hadoop fs -ls *命令获取相关文件或目录的修改时间,然后与设定的过期时间进行比较,之后执行删除操作即可 2. 相关代码: #!/bin/bash source ~/. ...

最新文章

  1. AI时代的领航者,智能电话机器人对市场的影响
  2. python批量下载验证码,用来做验证码处理
  3. mysql min函数 结果全为null_MySQL ----- 聚集函数(AVG,SUM,COUNT,MIN,MAX) (十一)
  4. 对python来说、一个模块就是一个文件-Python如何将将模块分割成多个文件
  5. 使用git管理源码之文件状态和工作区理解
  6. jquery在ie浏览器下中文乱码的问题
  7. mysql 只返回第一条_mybatis 关联查询时,从表只返回第一条记录解决办法
  8. linux系统平均价格,简单认识Linux系统平均负载
  9. 分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!
  10. window.open以post方式提交
  11. 极限学习机︱R语言快速深度学习进行回归预测
  12. 经典机器学习系列(十三)【结构化学习】
  13. 【c语言】背包问题的贪心法
  14. 如何设计百度 豆丁 道客巴巴 下载器
  15. coldplay 全集下载
  16. HYSPLIT 模型 传输轨迹 使用指南
  17. 变更DirectX SDK版本-DirectX8升级DirectX9
  18. 《老路用得上的商学课》16-20学习笔记
  19. html调用如何使用jeecms库,JEECMS标签使用实例教程-序
  20. 小鸟云服务器上线了新的操作系统

热门文章

  1. 单词 ---- part3
  2. Bonjour(苹果电脑公司的服务器搜索协议商标名)
  3. 咕咕的的复复读读机机 ccpc河南省赛
  4. 第4章 深度估计与分割(SGBM、GrabCut、分水岭) 个人笔记
  5. fluent python epub_Fluent Python, LineItem 进化路线
  6. HAL库中的MSP文件,及HAL_Init和HAL_DeInit
  7. 用adb工具给智能电视安装应用(在电视没法安装应用的情况下可用)
  8. 手动升级11.2.0.3到12.2.0.1
  9. 【论文】SCI期刊:工程技术类
  10. redis-删除所有key