2020年6月26日 by HXuesong
题目:把m到n之间的所有整数做逻辑与操作,求最终的结果
#include <stdio.h>
//求num的最高位位数
int msb(int num) {
int count = 0;
while(num > 0) {
count++;
num = (num >> 1);
}
return count-1;
}
//取num的第i位
int get_bit(int num, int i) {
return ((num >> i) &1);
}
//设置result的第i位
int set_bit(int result, int i) {
return (result | (1 << i));
}
//a和b做与运算
int bit_and(int a, int b) {
int msb_a = msb(a);
int msb_b = msb(b);
int result = 0;
if(msb_a != msb_b) {
return 0;
}
int msb = msb_a;
while(msb >= 0) {
int x = get_bit(a, msb);
int y = get_bit(b, msb);
if(x != y) {
return result;
}
else if(x == 1) {
result = set_bit(result, msb);
}
msb--;
}
return 0;
}
int main() {
printf("%X", bit_and(0x4a, 0x4e));
return 0;
}
输出:
48
题目:汉诺塔
#include <stdio.h>
//递归的思想
void hanoi(int n, char A, char B, char C) {
if(n == 1) {
printf("%c --> %c\n", A, C);
}
else {
hanoi(n - 1, A, C, B);
printf("%c --> %c\n", A, C);
hanoi(n - 1, B, A, C);
}
}
int main() {
hanoi(3, 'A', 'B', 'C');
return 0;
}
输出:
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
科创加分:
-
mathorcup+1.3
-
人工智能+0.6
-
华为杯+0.6
-
创新杯+1.3
-
3S+0.4
-
美赛+1.2
-
互联网+1.3
-
数模国赛+1.4
-
挑战杯+0.8
-
ican+1.3
-
数模挑战赛+0.3
-
SHE+0.3
-
时控+0.3
共11.1分
10+87.58+2+0.5=100.08
科创竞赛:
- 软件著作权2项+20
- 项目经过筛选入驻创新孵化园负责人+10
- 创新杯+10
- 互联网+8
- 数模国赛+15
- 3S杯+8
- iCAN+6
- 创业训练项目第一立项人+12
- 跨栏+1
- 六级+5
共95
思想品德:
- 省部级三好学生+10
- 校级百佳个人+5
- 五四之星+15
- 表扬信表扬+2 80+32=112*0.1=11.2