Skip to content

Latest commit

 

History

History
149 lines (113 loc) · 2.04 KB

2020-6-26.md

File metadata and controls

149 lines (113 loc) · 2.04 KB

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