• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

kaikai向前走

转职任务完成。崭新fn诞生
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

漏批了一张试卷,穷举- -

学校进行了一次英语考试,共有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] = {0x0a4, 0x1d7, 0x1c5, 0x0e7,};
    
int s[4] = {7, 5, 3, 0};
    
    
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分- -

posted on 2005-09-03 11:37  kaikai  阅读(1172)  评论(2)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3