1037 在霍格沃茨找零钱
原本看着通过率挺高的,就想赶快做完,没想到卡住挺长时间
在此次做题过程中,遇到的问题有:
1、用进制的方式直接减,A-B与B-A的结果不一样,必须将A、B调换,最后在结果前加上符号,才可得出正确结果。
2、发现了一个自己不太注意的地方,就是“相等”的时候,常常忽略,导致自己也找不到代码的问题。
3、这个代码是赶出来的,不太精干
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//进制问题
String str=sc.nextLine();
//拿空格区分,拿点区分
String[] st=str.split(" ");
String[] s1=st[0].split("[.]"); //应付
String[] s2=st[1].split("[.]"); //实付
String s="";
int[] arr=new int[3];
if(Integer.parseInt(s1[0])>Integer.parseInt(s2[0]))
{
for(int i=0;i<3;i++)
{
arr[i]=Integer.parseInt(s1[i]);
}
}
else {
for(int i=0;i<3;i++)
{
arr[i]=Integer.parseInt(s2[i]);
}
}
for(int i=2;i>=0;i--)
{
int a=arr[i];
int b=0;
if(Integer.parseInt(s1[0])>Integer.parseInt(s2[0]))
{
b=Integer.parseInt(s2[i]);
}
else {
b=Integer.parseInt(s1[i]);
}
//从后往前减
if(a>=b)
{
arr[i]=a-b;
}
else if(i==2){
arr[i]=a+29-b;
arr[i-1]=arr[i-1]-1;
}
else if(i==1)
{
arr[i]=a+17-b;
arr[i-1]=arr[i-1]-1;
}
}
if(Integer.parseInt(s1[0])>Integer.parseInt(s2[0]))
{
for(int i=0;i<3;i++)
{
if(i==0)
System.out.print("-"+arr[i]+".");
else if(i==2)
System.out.println(arr[i]);
else if(i==1)
System.out.print(arr[i]+".");
}
}
else {
for(int i=0;i<3;i++)
{
if(i!=2)
System.out.print(arr[i]+".");
else if(i==2)
System.out.println(arr[i]);
}
}
}
}
等自己有空的时候,再精炼



