Vasya the Hipster
题意
一天,嬉皮士瓦西娅决定数一数他有多少只袜子。原来他有一双红袜子和一双蓝袜子。根据最新的流行趋势,潮人应该穿不同颜色的袜子:左脚穿红色的袜子,右脚穿蓝色的袜子。每天早上,瓦西娅穿上新袜子,在睡觉前把它们扔掉,因为他不想洗它们。瓦西娅想知道,他能穿不同的袜子穿时髦的衣服的最长天数是多少天,在那之后的几天里,他可以穿同样的袜子,直到他的袜子用完或者不能用他的袜子做一双。你能帮他吗? 输入的单行包含两个正整数a和b(1<=a,b<=1001<=a,b<=100)-即Vasya得到的红色和蓝色袜子的数目。 输出两个空格分隔的整数-Vasya可以穿不同的袜子的最大天数和他可以穿同样的袜子的天数,直到他的袜子用完或者不能从他的袜子中制造出一双袜子时为止。请记住,在一天结束时,瓦西娅扔掉了他那天穿的袜子。 注意:在一天结束时,瓦西娅扔掉了他那天穿的袜子。
简而言之就是:从两个数中找到最小的数,再用较小的数作为减数,用较大的数作为被减数减去减数,得到差,差再除2。
思路
- 根据题目的输入输出,定义数,输入数
- 理解题意,数学方法
- 输出。
坑点
- 用数学方法理解
算法一:直接一个if判断
时间复杂度
- 输出大小: 1.83242034912109 MiB
- 编译时间: 0.84s
实现步骤
- 先定义两个数分别是红袜子和蓝袜子的数目,输入,再定义两个值,分别是穿不同袜子的天数和穿相同袜子的天数。
- if、else条件语句的判断,最小的一个数一定是穿不同袜子的天数,最大-最小=差,差除2取商,就是穿相同袜子的天数。
- 输出,终止程序。
代码
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int a,b;
if(n<m)
{
a=n;
b=(m-a)/2;
}
else
{
a=m;
b=(n-a)/2;
}
cout<<a<<" "<<b;
return 0;
}
总结
很简单,非常简单,if条件性判断语句掌握就可以了,其他的都是数学问题。