版权声明:spark https://blog.csdn.net/qq_35619728/article/details/89257583
小米oj
今天写的这个题还比较简单。。。。逐渐走出前两天自闭的心理。。。。昨天看了一篇关于快速排序的,讲的蛮详细的附上链接马桶上看算法…快速排序在我看来有点像二分法,也确实蛮巧妙的,时间复杂度最差才和
+1s
描述
在某个古老的神秘国度,有一位长者,他有一项特殊的能力,那就是能为自己的生命续一秒,与此同时,周围的人会相应的-1s
每当电子表的小时数与分钟数一样时(24小时制,00:00:00~23:59:59),那1分钟的最后1秒将会消失不见
也就是说,比如,06:06:58的下一秒将是06:07:00
现在,与长者共处了一段时间后,对于你来说,你度过的时间究竟是多少
输入
现实世界中经过的时间,格式为{天}d{小时} {分} {秒},时分秒补足2位
输出
对于你而言的时间,格式同输入
总体思路为先算出长者会比其他人多活多久,这里用秒来记录。。。。然后再用秒作为单位算年轻的人能多多少秒,再换成天数,小时,分钟数,秒数。
噢对了想起来了。。这个体还有一个地方。。。必须按照他的那个格式获取,直接当整形,遇到d跳出。。这个题有个坑。。。
#include"stdio.h"
/*
输入样例
2d06 05 24
复制样例
输出样例
2d06 04 30
*/
/*
一天会损失24*1 秒
完整的一小时损失一秒
*/
typedef struct
{
int day;
int hour;
int min;
int sec;
}time;
time young, old ;
int main(void)
{
static int a, b[100];//数组用来获取元素
static int num = 0;//用来算长者与我差的时间
static int i, j, k;
//time young,old=0;
static char p = 0;
while (~scanf_s("%d", &a))
{
b[i++] = a;
p = getchar();
if (p == 'd')
break;
}
while (~scanf_s("%d", &a))
{
p = getchar();
if (p == 'p')
break;
b[i++] = a;
}
old.day=b[0],old.hour = b[1], old.min = b[2],old.sec=b[3];//取出长者的时间
num += old.day * 24;//加上天数
for (j = 1; j <= 24; j++)
{
if (old.hour < j)
{
if (old.min > j)
num += j ;
else if(old.sec==59)
num += j ;
else
num += j-1;
break;
}
}
//old比长者多活num秒
long long int sum_y = 0;
sum_y = old.day * 24 * 3600 + old.hour * 3600 + old.min * 60 + old.sec - num;
young.day = sum_y / (24 * 3600);
young.hour = (sum_y- young.day*24*3600) / 3600;
young.min = (sum_y-young.day*24*3600 - young.hour*3600)/60;
young.sec = (sum_y- young.day * 24 * 3600 - young.hour * 3600 -young.min*60);
printf("%d %d %d %d \n",b[0],b[1],b[2],num);
printf("%d %d %d %d\n",young.day,young.hour,young.min,young.sec);
printf("%dd", young.day);
if (young.hour < 10)
printf("0");
printf("%d", young.hour);
printf(" ");
if (young.min < 10)
printf("0");
printf("%d", young.min);
printf(" ");
printf("%d", young.sec);
scanf_s("%d",&a);
}
然后c语言运行效率勉勉强强
然后果断皮一把。。不修改c++直接提交
嘿嘿
顺带说一句,昨天买的两本书今天到了。。。。。。。晚上回去看看