标题: 几道编程题
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6043
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-5-26 08:36 资料 个人空间 短消息 看全部作者 QQ
晕,原来第一题是二进制计数啊


顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6043
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-5-26 10:33 资料 个人空间 短消息 看全部作者 QQ


#include <stdio.h>

#define MaxN        30
#define MaxK        10e8



unsigned long _2N(unsigned int N){
        unsigned int i;
        unsigned long result=1;
        i=N;
        while(i--)result*=2;
        return(result);
}


unsigned int lighting(unsigned int N,unsigned long K){
        unsigned int result;
        unsigned int N1;
        unsigned long K1;
        N1=_2N(N);
        K1=K+1;
        result=!(unsigned int)(K1%N1);
        return(result);
}


void main(){
        unsigned int T;
        unsigned int N[255];
        unsigned long K[255];
        unsigned int i;

        scanf("%d\n",&T);
        for (i=0;i<=T-1;++i)
                scanf("%d %d\n",&N[i],&K[i]);
        for (i=0;i<=T-1;++i){
                printf("Case #%d:",i+1);
                if (N[i]==0 || N[i]>MaxN || K[i]>MaxK)
                        printf("ERROR\n");
                else if(lighting(N[i],K[i]))
                        printf("ON\n");
                else printf("OFF\n");
        }
        printf("Press any key to exit...\n");
        getchar();

}



顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6043
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-5-29 00:51 资料 个人空间 短消息 看全部作者 QQ
回复 #35 岱瀛 的帖子

从右往左数,最右边是第一个开关。

一开始是:

灯—00000000……00000000—电源,第一个断开的开关是通电的,那么按一下按钮之后,最后一个开关状态翻转:
灯—00000000……00000001—电源,此时电流通过第一个开关到达第二个开关,那么按第二次按钮后,前两个开关状态都翻转:
灯—00000000……00000010—电源,此时第一个开关通电,第二个开关断电,那么按第三次按钮后,仅第一个开关状态翻转:
灯—00000000……00000011—电源,此时电流通过前两个开关到达第三个开关,那么按第四次按钮后,前三个开关状态翻转:
灯—00000000……00000100—电源,

……

从前几步就可以看出,其实这就是二进制计数的题目。显然每按下一次按钮,开关序列组成的二进制数+1。
那么如果有N个开关,就需要按(K*2^N-1)次按钮才能把灯点亮。(K为正整数。)

--------------------------------------------------------------

另外,通电未必等于有电流,如果电源是市电220V火线,你用手碰一下通电的开关……

[ 本帖最后由 阿尔法孝直 于 2010-5-29 00:53 编辑 ]
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6043
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-6-4 01:52 资料 个人空间 短消息 看全部作者 QQ


QUOTE:
原帖由 周瑜 于 2010-5-25 04:46 发表
甲乙面前有两堆豆子,每人轮流取,每次只能从多的那堆取少的那堆豆子数量的整数倍,把其中一堆取完的输掉游戏。

例如两堆豆子分别为 12 和 51,
甲先取,从 51 中拿掉 12 的 3 倍 36 个,剩余数量为 12 和  ...

这个整数是否包括0?
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6043
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-6-4 02:10 资料 个人空间 短消息 看全部作者 QQ


QUOTE:
原帖由 周瑜 于 2010-5-25 04:46 发表
输入格式:
第一行为测试样本数量 T ,以下 T 行每行为一个样本,包含以空格分隔的四个整数 A1,B1,A2,B2。

输出格式:
每一行为 Case #x: y 的格式,其中 x 为1开始的测试样本序号,y 为先手必胜 (A,B) 对的个数。

限制条件:
1 ≤ T ≤ 100
1 ≤ A1 ≤ A2 ≤ 1,000,000
1 ≤ B1 ≤ B2 ≤ 1,000,000

示例输入:
3
5 5 8 8
11 11 2 2
1 6 1 6

示例输出:
Case #1: 0
Case #2: 1
Case #3: 20

样本2:A1=11,B1=11,A2=2,B2=2……好奇怪,A1>A2,B1>B2
样本3:A1=1,B1=6,A2=1,B2=6……这样看来只有1组,怎么结果会是20组呢?

[ 本帖最后由 阿尔法孝直 于 2010-6-4 02:11 编辑 ]
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2025-9-2 06:28
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.010291 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP