洛谷入门2(2)

题目P1909买铅笔

P1909 [NOIP2016 普及组] 买铅笔 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 

 方法一:

import java.util.Scanner;
import java.util.Arrays;
public class Main {
	public static void main(String[]args) {
		Scanner cin=new Scanner(System.in);
		int n =cin.nextInt();
		int a1=cin.nextInt();
		int a2=cin.nextInt();
		int b1=cin.nextInt();
		int b2=cin.nextInt();
		int c1=cin.nextInt();
		int c2=cin.nextInt();
		int arr[]= {(f(a1,a2,n)/a1)*a2,(f(b1,b2,n)/b1)*b2,(f(c1,c2,n)/c1)*c2};
		Arrays.sort(arr);
		System.out.println(arr[0]);
	}
	public static int f(int a, int b, int m) {
		int k=a;
		while(a<m) {
			a+=k;
		}
		return a;
	}
}

方法二:

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner cin=new Scanner(System.in);
		int n=cin.nextInt();//需要购买的数量
		int [][]a=new int[3][2];//二维数组
        //将每种计算的结果存放在数组中,并最后进行比较,输出最小的结果
		int []array=new int[3];
   		for(int i=0;i<3;i++) {//对三种铅笔进行循环
        //承接每一行中的两个数组,开始对行循环
			a[i][0]=cin.nextInt();
			a[i][1]=cin.nextInt();
			int f=n/a[i][0];//看需要多少个包装的
			if(n%a[i][0]!=0) {//不为0时有剩余应多买一个
				f=f+1;
			}			
            //最后的数组为单价乘购买的包装数
			array[i]=f*a[i][1];			
		}
		Arrays.sort(array);
		System.out.print(array[0]);
	}
}

题目P1055ISBN号码

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
	public static void main(String []args) {
		BufferedReader bin=new BufferedReader(new InputStreamReader(System.in));
		try {
			int sum=0;
			char cc='0';
			String isbn_0=bin.readLine();
			String isbn=isbn_0.replace("-","");
			for(int i=0;i<9;i++) {
				int ii=(int)isbn.charAt(i)-48;
				sum+=ii*(i+1);
			}
			sum=sum%11;
			if(sum==10)cc='X';
			else cc=(char)(sum+48);
			if(cc==isbn.charAt(9))
				System.out.println("Right");
			else {
				isbn_0=isbn_0.substring(0,12)+cc;
				System.out.println(isbn_0);
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

题目P1424小鱼的航程(改进版)

import java.util.Scanner;
public class Main {
	public static void main(String[]args) {
		Scanner cin=new Scanner(System.in);
		long a=0;
		long x=cin.nextLong();
		long n=cin.nextLong();
		for(int i=0;i<n;i++) {
			if(x!=6&&x!=7)
				a+=250;
			if(x==7)
				x=1;
			else x++;
		}
		System.out.println(a);
		return;
	}
}

 题目P1888三角函数

 注意题目中要求的约分操作

方法一:

import java.util.*;
public class Main {
	public static void main(String[]args) {
		Scanner reader=new Scanner(System.in);
		int a=reader.nextInt();
		int b=reader.nextInt();
		int c=reader.nextInt();
		int Max=0,Min=0;
		if(a>b) {
			Max=a;
			Min=b;
		}else {
			Max=b;
			Min=a;
		}
		if(c>Max) {
			Max=c;
		}
		if(c<Min) {
			Min=c;
		}
		for(int i=1;i<=Min;i++) {
			if(Max%i==0&&Min%i==0) {
				Max=Max/i;
				Min=Min/i;
			}
		}
		System.out.print(Min+"/"+Max);
	}
}

方法二:

import java.util.Scanner;
import java.util.Arrays;
public class Main {
	public static void main(String[]args) {
		Scanner cin=new Scanner(System.in);
		int max=0,min=0;
		int[]a=new int[3];
		for(int i=0;i<a.length;i++) {
			a[i]=cin.nextInt();
		}
		Arrays.sort(a);
		max=a[2];
		min=a[0];
		for(int i=1;i<=min;i++) {//进行判断是否有公因数
			if(max%i==0&&min%i==0) {
				max=max/i;//开始进行约分
				min=min/i;
			}
		}
		System.out.println(min+"/"+max);
	}
}

题目P5717三角形分类

注意对数据的处理

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner cin=new Scanner(System.in);
		int[]arr=new int[3];//输入的三位数字
		arr[0]=cin.nextInt();
		arr[1]=cin.nextInt();
		arr[2]=cin.nextInt();
		Arrays.sort(arr);//排序进行长短边的判断
		int a=arr[0];
		int b=arr[1];
		int c=arr[2];
		if(a+b<=c) {//无法组成三角形时
			System.out.print("Not triangle");
		}else {
			if(a*a+b*b==c*c) {//相等的情况
				System.out.print("Right triangle");
			}
			if(a*a+b*b>c*c) {//大于长边时
				System.out.print("Acute triangle"+"\n");
			}
			if(a*a+b*b<c*c) {//小于长边时
				System.out.print("Obtuse triangle"+"\n");
			}
			//考虑其中情况重复时
			if((a==b&&a!=c)||(a==c&&a!=b)||(b==c&&b!=a)) {
				System.out.print("Isosceles triangle"+"\n");
			}
			if(a==b&&b==c) {
				System.out.print("Isosceles triangle"+"\n"+"Equilateral triangle");
			}
		}	
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值