情况问题奇怪的比赛--蓝桥杯

最近研究情况问题,稍微总结一下,以后继续补充:

    

简述

    这是2012年蓝桥国全件软大赛赛预的第4题,景情是一个计分规矩怪奇的竞赛,问题是已知总分到得每题的答回情况。

    

标题描述

    某电视台举办了低碳生活大奖赛。标题的计分规矩当相怪奇:
    每位选手须要答回10个问题(其编号为1到10),越前面越有难度。答对的,以后分数翻倍;答错了则扣掉与题号雷同的分数(选手必须答回问题,不答回按错误处理)。
    每位选手都有一个起步的分数为10分。
    某得胜选手终最得分刚好是100分,如果不让你看竞赛程过,你能推断出他(她)哪个标题答对了,哪个标题答错了吗?
    如果把答对的记为1,答错的记为0,则10个标题的答回情况可以用仅含有1和0的串来表现。例如:0010110011 就是可能的情况。
    你的任务是算出全部可能情况。每一个案答占一行。
    案答写在“解答.txt”中,不要写在这里!

    

析分

    这个题也是应用穷举法,但是穷举的是每题的答题情况,应用十六进制可以较好的实现。对于分数的算计,应用的是与一个分数组数的与运算。

    

源代码

    每日一道理
盈盈月光,我掬一杯最清的;落落余辉,我拥一缕最暖的;灼灼红叶,我拾一片最热的;萋萋芳草,我摘一束最灿的;漫漫人生,我要采撷世间最重的———毅力。
# include <stdio.h>
int main(void)
{
	int i, j;
	int comp[10] = {0x200, 0x100, 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1};
	int grade;
	int out[10];
	
	for(i = 0x0; i < 0x400; i++){
		grade = 10;
		for(j = 0; j < 10; j++){
			out[j] = 0;
			if(i & comp[j]){
				grade <<= 1;
				out[j] = 1;
			} else{
				grade -= j + 1;
				out[j] = 0;
			}
		}
		
		if(grade == 100){
			for(j = 0; j < 10; j++){
				printf("%d", out[j]);
			}
			putchar('\n');
		}
	}
}

    

最后案答

    0010110011
0111010000
1011010000

文章结束给大家分享下程序员的一些笑话语录: 问路
有一个驾驶热气球的人发现他迷路了。他降低了飞行的高度,并认出了地面 上的一个人。他继续下降高度并对着那个人大叫,“打扰一下,你能告诉我我 在哪吗?”
下面那个人说:“是的。你在热气球里啊,盘旋在 30 英尺的空中”。
热气球上的人说:“你一定是在 IT 部门做技术工作”。
“没错”,地面上的人说到,“你是怎么知道的?”
“呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
地面上的人说,“你一定是管理层的人”。
“没错”,热气球上的人说,“可是你是怎么知道的?”
“呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。

posted @ 2013-04-25 19:43  xinyuyuanm  阅读(292)  评论(0编辑  收藏  举报