2020-12-21

链接:https://ac.nowcoder.com/acm/contest/1877/M
来源:牛客网
小乐乐比较懒惰,他现在想睡觉,然后再去学习。他知道现在的时刻,以及自己要睡的时长,想设定一个闹钟叫他起床学习,但是他太笨了,不知道应该把闹钟设定在哪个时刻,请你帮助他。(只考虑时和分,不考虑日期)
输入描述:
输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。
输入格式:hour:minute k(如hour或minute的值为1,输入为1,而不是01)
(0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 109)
输出描述:
对于每组输入,输出闹钟应该设定的时刻,输出格式为标准时刻表示法(即时和分都是由两位表示,位数不够用前导0补齐)。
示例1
输入
0:0 100
输出
01:40

e=c+d;
if(e>=60)
{
a=a+e/60;
c=e-(e/60)60;
}
关于定闹钟问题,这段代码可谓核心;e为判定变量,e的使用可谓优秀,c为原分钟,a为原小时,首先c+d是分钟的加和,除以60,可知度过了几个小时。即a+e/60;而度过了几个小时
60即分针转了多少圈,再用c+d即分钟的和(此时已赋给e)减这个圈数的分钟数(*60),所剩的一定是一个小于60的数,可以直接作为分针输出。
a+=(e/60)*1;
e-=(e/60)*60;
c=e;
可见小时每加一,分钟就减60;可以称其为核心思想,这种写法更易理解。

链接:https://ac.nowcoder.com/acm/contest/1877/P
来源:牛客网
小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
示例1
输入
222222
输出
0
示例2
输入
123
输出
101

#include<stdio.h>
int main(){
char a[500];
long long int b,c,m,n;
gets(a);
for(n=0;a[n]!=’\0’;n++){
if(a[n]‘1’||a[n]‘3’||a[n]‘5’||a[n]‘7’||a[n]‘9’)
a[n]=‘1’;
if(a[n]
‘0’||a[n]‘2’||a[n]‘4’||a[n]‘6’||a[n]‘8’)
a[n]=‘0’;
}
for(b=0;;b++){
if(a[b]!=‘0’)
break;
}
for(c=b;;c++){
if(a[b]’\0’){
printf(“0”);
break;
}
printf("%c",a[c]);
if(a[c]
’\0’)
break;
}
return 0;
}
这波是字符串和C语言的胜利;gets()
可以接连输入字符串,并易于对每个字符进行操作,这个过程要用到数组。()中直接写数组的地址就行。要注意gets需要用到<stdio.h>头文件
不可以是;且不可以use namespace std

#include
using namespace std;
int main() {
long long n,k=1,sum=0;
cin>>n;
while(n) {
if(n%2!=0) {
sum+=k;
}
k*=10;
n/=10;
}
cout<<sum;
return 0;
}

真正的胜利属于C++;利用数字来代替分开的字符;上述思维是将数字每个分开;而这个思维则反向的将数字合起来,直接计算。妙极妙极;逻辑如下:输入数字
如果奇数
Sum+k(最后加到sum上)
否则无事
K*10(每加一次扩大十倍)
n/10(计算次数,直到每个数位算完)
当n=0时
跳出循环
输出sum

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值