zoukankan      html  css  js  c++  java
  • 漏批了一张试卷,穷举

    学校进行了一次英语考试,共有10道是非题,每题为10分,解答用1表示"是",用0表示"非"的方式。但老师批完卷后,发现漏批了一张试卷,而且标准答案也丢失了,手头只剩下了3张标有分数的试卷。

    试卷一:
    ①   ②   ③   ④   ⑤   ⑥   ⑦   ⑧   ⑨   ⑩
    0    0    1    0    1    0    0    1    0    0      得分:70
    试卷二:
    ①   ②   ③   ④   ⑤   ⑥   ⑦   ⑧   ⑨   ⑩
    0    1    1    1    0    1    0    1    1    1      得分:50
    试卷三:
    ①   ②   ③   ④   ⑤   ⑥   ⑦   ⑧   ⑨   ⑩
    0    1    1    1    0    0    0    1    0    1      得分:30

    待批试卷:
    ①   ②   ③   ④   ⑤   ⑥   ⑦   ⑧   ⑨   ⑩
    0    0    1    1    1    0    0    1    1    1      得分:?
    请编一程序依据这三张试卷,算出漏批的那张试卷的分数。
     
    用穷举吧,反正才10个题...

    #include <cstdio> 

    int bits(int a) // 计算a中有多少个位是1
    {
        
    int c = 0;
        
    for(c = 0; a; c++)
        
    {
            a 
    = a & (a-1);
        }

        
    return c;
    }


    int main()
    {
        
    int i;
        
    int a[4= {0x0a40x1d70x1c50x0e7,};
        
    int s[4= {7530};
        
        
    for(i = 0; i < 1024; i++// 尝试各种答案
        {
            
    if (10 - bits(a[0^ i) == s[0&& // a[0] ^ i 表示按照答案i对a[0]批改,得到1的位为不同的(也就是答错的)题
                10 - bits(a[1^ i) == s[1&&
                
    10 - bits(a[2^ i) == s[2]) // 得分都满足的答案可能是正确答案
            {
                s[
    3= 10 - bits(a[3^ i); // 计算漏批卷子的分数
                printf("%d\n", s[3]);
            }

        }
     
        
    return 0;
    }


    结果很巧,虽然有多种可能的正确答案,但这张卷子都是60分- -
  • 相关阅读:
    dstat
    centos安装指定版本的golang
    APP防CC为什么复杂
    火狐浏览器的书签如何自动在新窗口打开?
    linux jdk版本随时切换
    centos7 yum安装java环境
    kangle清除缓存接口
    CC攻击原理及防范方法
    GET 和 POST 的区别 以及为什么 GET请求 比 POST请求 更快
    HTTP缓存机制
  • 原文地址:https://www.cnblogs.com/kaikai/p/229296.html
Copyright © 2011-2022 走看看