文章目录
前言
每当我们得到一组有序数组需要将其分类,有时我们应该考虑其是否可以保证每组数的个数相同,从而避免发生得到结果错误的情况。
举例
兔妈妈分胡萝卜问题
题目描述:
兔子妈妈有n颗胡萝卜,胡萝卜的能量值依次为1,3,5,…,2n−11,3,5,…,2n−1。兔子妈妈想把胡萝卜分给自己的两个兔宝宝,它想让兔宝宝分得胡萝卜的能量和的差值越小越好。请你帮它算一下,差值最小是多少?
输入描述:
第一行是一个整数T(1≤T≤1000)T(1≤T≤1000) 表示样例的个数。
以后每行一个样例,为一个整数n(1≤n≤109)n(1≤n≤109)
输出描述:
每行输出一个样例的结果,为一个整数。
代码展示:
#include <stdio.h>
int main() {
int T;
scanf("%d", &t);
while(T--){
int n;
scanf("%d", &n);
if(n == 1) {
printf("1\n");
}
else if(n == 2){
printf("2\n");
}
else {
if(n & 1)
printf("1\n");
else
printf("0\n");
}
}
}
具体讲解:
首先,明确我们仅需将物品分为两组,那么,利用我们的分奇偶讨论思想,我们知道应该本题应分为两种情况,一种两个兔子胡萝卜个数相同即每份的数的数量相同,另一种两份的数的数量不同。
本题较为简单,规律易寻,只需判断n的奇偶即可,但要注意,当n为0和1时较为特殊需特殊说明。