zoukankan      html  css  js  c++  java
  • 洛谷P1615 西游记公司

    题目背景

    一道极其无厘头的题目

    题目描述

    事情是这样的:西游记中的孙沙猪(孙杀猪)三徒弟在西天取经之后开始进入厦门大学经贸系学习经济,在1个小时的学习后,他们用暴力手段毕业了。然后,他们创办了三个公司——“花果山生态旅游山庄集团公司”“高老庄猪肉美食城有限公司”“流沙河轮渡有限公司”。虽然这三家公司出自“经卷出版社”社长唐三藏的徒弟们,但是仍然保持着0元以下的财政收入。于是,他们想到了一个无聊的方法——向别人偷!是这样的:如果猪八戒知道孙悟空要偷猪八戒的平底锅,猪八戒就不能去抢沙和尚的保时捷。现在,作为猪八戒手下首席智士(智障人士)的你,要帮助既聪明又愚蠢的猪八戒用那种不正当的手段挽救这个公司!你可以这样做:你已经知道孙悟空什么时候要来偷猪八戒的东西,而猪八戒又要在什么时间去抢沙和尚的东西,又知道猪八戒每秒钟可以偷沙和尚1台笔记本电脑,帮猪八戒算一算,自己在有限的时间内能偷到沙和尚多少台电脑,使得他有足够的时间来防御大师兄。

    输入输出格式

    输入格式:

    第一行:时:分:秒(表示猪八戒打算去偷沙和尚笔记本电脑的时间)

    第二行:时:分:秒(表示孙悟空打算去偷猪八戒平底锅的时间)

    注:时间可能有前导0,也有可能没有。

    第三行:猪八戒每秒可以偷沙和尚几台笔记本电脑

    确保第一行的时间要比第二行的时间来得早。

    输出格式:

    一个整数,有可能大于long long(int64),表示猪八戒能偷沙和尚笔记本的个数

    输入输出样例

    输入样例#1:
    00:0:00
    0:00:10
    10
    输出样例#1:
    100

    说明

    数据范围:

    00:00:00到23:59:59

    数量<=32767

    这题最难的地方在于读入2333 如果是pascal选手估计得敲几十行代码2333

    刚开始看到前导0个数不定,打算读字符串再截取数字。

    思考两秒钟后发现根本不用,平常用的读入优化管你有几个前导0

    然而读入优化怎么解决那个冒号?

    思考三秒钟后果断用scanf("%d%c%d%c%d"),顺便鄙视了一下三秒前自己的智商

    还要多弄个char,挺麻烦的,于是改成了scanf("%d%*c%d%*c%d")

    %*的作用是读取该类型数据但不存储,也就是跳过该数据。

    1 scanf("%d%*c%d%*c%d",&sh,&sm,&ss);
    2 scanf("%d%*c%d%*c%d",&th,&tm,&ts);

    欢快地A掉了题

    ——

    开始写题解的时候,突然发现读入优化末尾的最后一次getchar()可以直接把冒号跳过去……

    1 sh=read();sm=read();ss=read();
    2 th=read();tm=read();ts=read();

    就像这样,完全等效。

    鄙视一下一分钟前自己的智商。

     1 /*by SilverN*/
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 int read(){
     9     int x=0,f=1;char ch=getchar();
    10     while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    11     while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
    12     return x*f;
    13 }
    14 long long w;
    15 int sh,sm,ss;
    16 int th,tm,ts;
    17 int main(){
    18 //    scanf("%d%*c%d%*c%d",&sh,&sm,&ss);
    19 //    scanf("%d%*c%d%*c%d",&th,&tm,&ts);
    20     sh=read();sm=read();ss=read();
    21     th=read();tm=read();ts=read();
    22     scanf("%lld",&w);
    23     long long tmp=(long long)th*3600-sh*3600+tm*60-sm*60+ts-ss;
    24     tmp*=w;
    25     cout<<tmp<<endl;
    26     return 0;
    27 }
  • 相关阅读:
    Microsoft Visual studio2013 在c++中引用本地文件
    二叉树遍历
    二叉搜索树、B树
    01_C语言基础
    Linux网络应用编程之集线器(Packet Tracer仿真)
    Linux网络应用编程之Packet Tracer安装及界面介绍
    Linux网络应用编程之交换机概述
    Linux网络应用编程之VLAN(Packet Tracer仿真)
    ntp服务
    Failed to mount /sysroot如何解决?
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/6006141.html
Copyright © 2011-2022 走看看