1 条题解

  • 0
    @ 2024-12-24 9:54:35

    C :

    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
    	int l,h,m,s,time=0,now=0,i;
    	double v=0,d=0;
    	char t[20];
    	while(gets(t))
    	{
    		h=(t[0]-'0')*10+t[1]-'0';
    		m=(t[3]-'0')*10+t[4]-'0';
    		s=(t[6]-'0')*10+t[7]-'0';
    		now=h*3600+m*60+s;
    		l=strlen(t);
    		if(l==8)
    		{
    			d+=(now-time)*v;
    			printf("%s %.2lf km\n",t,d/1000);
    			time=now;
    		}
    		else
    		{
    			d+=(now-time)*v;
    			time=now;
    			v=t[9]-'0';
    			for(i=10;i<l;i++)
    				v=v*10+t[i]-'0';
    			v/=3.6;
    		}
    	}
    	return 0;
    }
    

    Java :

     
    
    import java.text.DecimalFormat;
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner cin = new Scanner(System.in);
    		int speed = 0;
    		float distance = 0;
    		int[] startTime = new int[3];
    		boolean isStart = true;
    		while (cin.hasNextLine()) {
    			String hang = cin.nextLine();
    			int lenght = hang.length();
    			if (lenght <= 8) {
    				String[] ts = hang.split(":");
    				int[] endTime = new int[3];
    				endTime[0] = Integer.parseInt(ts[0]);
    				endTime[1] = Integer.parseInt(ts[1]);
    				endTime[2] = Integer.parseInt(ts[2]);
    				int h = endTime[0] - startTime[0];
    				float m = endTime[1] - startTime[1];
    				int s = endTime[2] - startTime[2];
    				m += ((float) s) / 60f;
    				float ddd = (h + m / 60f) * speed;
    				DecimalFormat fnum = new DecimalFormat("##0.00"); 
    				String re=fnum.format(ddd + distance); 
    				System.out.println(hang+" "+re+" km");
    			} else {
    				String[] re_head = hang.split(" ");
    				String[] ts = re_head[0].split(":");
    				
    				int[] endTime = new int[3];
    				endTime[0] = Integer.parseInt(ts[0]);
    				endTime[1] = Integer.parseInt(ts[1]);
    				endTime[2] = Integer.parseInt(ts[2]);
    				if (!isStart) {
    
    					int h = endTime[0] - startTime[0];
    					float m = endTime[1] - startTime[1];
    					int s = endTime[2] - startTime[2];
    					m += ((float) s) / 60f;
    					float ddd = (h + m / 60f) * speed;
    					distance += ddd;
    				}
    				speed = Integer.parseInt(re_head[1]);
    				startTime[0] = endTime[0];
    				startTime[1] = endTime[1];
    				startTime[2] = endTime[2];
    				isStart=false;
    			}
    			// System.out.println( lenght);
    		}
    
    	}
    
    }
    
    
    • 1

    信息

    ID
    1322
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者