找数字
一个数组中只有两个数字是出现一次,
其他所有数字都出现了两次 。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<time.h>
#define SIZE(a) (sizeof(a)/sizeof(a[0]))
//如果是作为参数在函数里不能直接用宏,因为在函数里数组名是一个指针,
//这个值是 4/单个元素占用字节数。
int main() {
int a[] = { 1, 2, 3, 4, 4, 3, 2, 1, 10, 12};
int n = 0;
int k = 0;
int num1 = 0;
int num2 = 0;
for (int i = 0; i < SIZE(a); ++i) {
n ^= a[i];
}
for (int i = 0; i < 32; ++i) {
if (n & 1 << i) {
k = i;
break;
}
}
for (int i = 0; i < SIZE(a); ++i) {
if (a[i] & 1 << k) {
num1 ^= a[i];
}
else {
num2 ^= a[i];
}
}
printf("%d %d\n", num1, num2);
system("pause");
}
喝汽水
1瓶汽水1元,2个空瓶可以换一瓶汽水,
给20元,可以喝多少瓶汽水 。
#include<stdio.h>
//不能赊
int main() {
int n = 20;
int k = 0;
while (n > 0) {
k += n;
n /= 2;
}
printf("可以喝%d瓶汽水\n", k);
system("pause");
}